Тема: допоможіть(С++(стрічки))
завдання
Створити наступні функції:
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 * mystrchr (char * str, char s); - Функція здійснює пошук символу s в стрічці str. Функція повертає вказівник на перше входження символу в стрічку, в іншому випадку 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);
void main() {
int 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);
system("pause");
}
char*mystrchr(char*str, char s) {
int index = 0, num = 0;
for (int i = 0; str[i] != 0; i++) {
if (str[i] == s) {
index = i;
break;
}
}
const int a = 100;
char str1[a];
for (int i = 0; str1[i + index] != 0; i++) {
str1[i] = str[i + index];
num++;
}
char* str2 = nullptr;
if (index != 0) {
return str1;
}
else {
return str2;
}
}
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*mystrchr(char*str, char s) {
int index = 0, num = 0;
for (int i = 0; str[i] != 0; i++) {
if (str[i] == s) {
index = i;
break;
}
}
const int a = 100;
char str1[a];
for (int i = 0; str1[i + index] != 0; i++) {
str1[i] = str[i + index];
num++;
}
char* str2 = nullptr;
if (index != 0) {
return str1;
}
else {
return str2;
}
}
ось скріншот помилки(останій рядок тільки в компіляторі відноситься до завдання і помилка)
Без імені.png 73.25 kb, 144 downloads since 2018-10-22