有人可以向我解释为什么这段代码会不断崩溃。 一切似乎都很好。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* find(char *haystack, char needle);
int main (){
char haystack[400], needle;
fgets(haystack,400,stdin);
scanf("%c", needle);
if(find(haystack,needle)) printf("%ld", find(haystack, needle) - haystack);
else printf(NULL);
return 0;
}
char* find(char *haystack, char needle) {
int lewski, cska;
lewski = strlen(haystack);
if(strchr(haystack,needle)){
cska = lewski-strlen(strchr(haystack,needle));
return &haystack[cska];
}
return NULL;
}
答案 0 :(得分:1)
在您的代码中,您没有正确使用scanf
。
修改如下;
scanf("%c", &needle);
同时printf
无法打印NULL
修改如下;
printf("NULL");
希望这有帮助。