Тема: допоможіть(С++(стрічки))
ось повне завдання
Створити наступні функції:
int mystrlen (const char * str); - Функція визначає довжину стрічки.
char * mystrcpy (char * str1, const char * str2); - Функція копіює всі символи з стрічки str2 в стрічку str1. Функція повертає вказівник на першу стрічку str1.
char * mystrcat (char * str1, const char * str2); - Функція приєднує стрічку str2 до стрічки str1. Функція повертає вказівник на першу стрічку str1.
char * mystrchr (char * str, char s); - Функція здійснює пошук символу s в стрічці str. Функція повертає вказівник на перше входження символу в стрічку, в іншому випадку 0.
char * mystrstr (char * str1, char * str2); - Функція здійснює пошук підстрічки str2 в стрічці str1. Функція повертає вказівник на перше входження підстрічки str2 в стрічку str1, в іншому випадку 0.
char * mystrrev (char * str); - Функція реверсує стрічку і повертає вказівник на нову стрічку.
ось завдання яке зараз виконую
char * mystrstr (char * str1, char * str2); - Функція здійснює пошук підстрічки str2 в стрічці str1. Функція повертає вказівник на перше входження підстрічки str2 в стрічку str1, в іншому випадку 0.
ось весь код
#include <iostream>
#include <conio.h>
using namespace std;
int mystrlen(const char*str);
char*mystrcpy(char*str1, const char*str2);
char*mystrcat(char*str1, const char*str2);
char*mystrchr(char*str, char s);
char*mystrstr(char*str1, char*str2);
void main() {
char s = 0;
setlocale(LC_ALL, "ru");
const int a = 100;
char str1[a];
cout << "Введiть стрiчку : ";
gets_s(str1);
int n = mystrlen(str1);
cout << n << "\n";
char str2[a];
cout << "Введiть стрiчку : ";
gets_s(str2);
char* aaa = mystrcpy(str1, str2);
cout << str1 << "\n" << str2 << "\n";
char* aaaa = mystrcat(str1, str2);
cout << str1 << "\n";
cout << "Введiть символ : ";
cin >> s;
char *aaaaa = mystrchr(str1, s);
puts(aaaaa);
char str3[a];
cout << "Введiть стрiчку : ";
gets_s(str3);
char* bb = mystrstr(str1, str3);
puts(bb);
system("pause");
}
char*mystrstr(char*str1, char*str3) {
int a = 0, index = 0;
int n = mystrlen(str1);
for (int j = 0; j < n; j++) {
for (int i = 0; str1[i] != 0; i++) {
if (str1[i] == str3[i]) {
a++;
index = i;
}
a = 0;
if (a == n) {
return &str1[index - n];
}
}
}
for (int i = 0; str1[i] != 0; i++) {
str1[i] = '0';
}
return str1;
}
char *mystrchr(char*str1, char s) {
for (int i = 0; str1[i] != 0; i++) {
if (str1[i] == s) {
return &str1[i];
}
}
for (int i = 0; str1[i] != 0; i++) {
str1[i] = '0';
}
return str1;
}
char*mystrcat(char*str1, const char*str2) {
int num = 0;
const int a = 100;
char str[a];
for (int i = 0; str1[i] != 0; i++) {
str[i] = str1[i];
num++;
}
str[num] = '\0';
int nam = mystrlen(str);
num = 0;
for (int i = 0; i < a; i++) {
if (str1[i] == '\0') {
str1[i] = ' ';
}
}
int ii = 0;
for (int i = 0; i < a + a, str2[ii] != 0; i++) {
if (i < nam) {
str1[i] = str[i];
num++;
}
if (i > nam) {
str1[i] = str2[ii];
ii++;
num++;
}
}
str1[num] = '\0';
return str;
}
char*mystrcpy(char*str1, const char*str2) {
int num = 0;
const int a = 100;
char str[a];
for (int i = 0; str1[i] != 0; i++) {
str[i] = str1[i];
num++;
}
str[num] = '\0';
num = 0;
for (int i = 0; i < a; i++) {
if (str1[i] == '\0') {
str1[i] = ' ';
}
}
for (int i = 0; str1[i] != 0; i++) {
str1[i] = str2[i];
num++;
}
return str;
}
int mystrlen(const char*str) {
int num = 0;
for (int i = 0; str[i] != 0; i++) {
if (str[i] != 0) {
num++;
}
}
return num;
}
ось код завдання
char*mystrstr(char*str1, char*str3) {
int a = 0, index = 0;
int n = mystrlen(str1);
for (int j = 0; j < n; j++) {
for (int i = 0; str1[i] != 0; i++) {
if (str1[i] == str3[i]) {
a++;
index = i;
}
a = 0;
if (a == n) {
return &str1[index - n];
}
}
}
for (int i = 0; str1[i] != 0; i++) {
str1[i] = '0';
}
return str1;
}
невводиться стрічка а вводяться нулі