Я работаю над проектом, предназначенным для создания функций для выполнения различных действий, но у меня возникли проблемы с реализацией одной из функций.Почему моя функция символа падает?
int main()
{
char str1[30] = "Hello";
char str2[30] = "Goodbye old friend";
char str3[30];
char *p = strCopy(str3, "Annie");
printf("(Annie) %s\n", p);
p = strString(str3, "nn");
printf("(nnie) %s\n", p);
strCopy(str3, "HeloHellooo");
p = strString(str3, "ello");
printf("(ellooo) %s\n", p);
return 0;
}
char *strCopy(char *s1, const char *s2)
{
char *b = s1;
while (*s2!='\0')
{
*s1 = *s2;
s1++;
s2++;
}
*s1 = '\0';
return b;
}
char *strString(const char *s1, const char *s2) // returns a string that starts with the characters in *s2. For example: char *strString ("Annie", "nn") should return "nnie".)
{
char *test;
char *b = test;
while (*s1 != '\0' && *s2 != '\0')
{
if (*s1 == *s2)
{
*test = *s1;
}
s1++;
s2++;
}
*test = '\0';
return b;
}
У меня возникли проблемы, выяснить, как вернуть значение в полукокса * strString когда целые константы являются только два параметра. Когда я пытаюсь, программа вылетает из строя. Имейте в виду, что параметры, декларации функций и то, что находится внутри main(), должны быть точно такими, какие они написаны. Это код, данный мне как часть проекта. Я могу только манипулировать тем, что входит в функции. Мне также не разрешено использовать массивы в любой из моих функций.
(код внутри * strString, очевидно, не является окончательным. Я просто возник проблемы что-нибудь тестирование, пока я не могу понять, как вернуть значение.)
Параметры 'strString' являются указателями, а не целыми числами. Однако вам нужно будет «отбросить const», чтобы вернуться (если предполагается, что это должно иметь такое же поведение, как функция «strstr»), вам также придется переписать тело функции, чтобы на самом деле произвести предполагаемый указатель. –