다른 작업을 수행하는 함수를 만드는 프로젝트에서 작업하고 있지만 함수 중 하나를 구현하는 데 문제가 있습니다.왜 내 캐릭터 기능이 충돌합니까?
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
내부
'strString'의 매개 변수는 정수가 아니라 포인터입니다. 그러나 "strstr"함수와 같은 동작을한다고 가정하면 함수 포인터를 다시 생성해야 실제로 포인터를 생성 할 수 있습니다. –