0

有人可以向我解释为什么这段代码经常崩溃。在我看来一切都很好。

#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;
}
4

1 回答 1

1

在您的代码中,您没有scanf正确使用。修改如下;

scanf("%c", &needle);

也不printf打印NULL 修改如下;

printf("NULL");

希望这可以帮助。

于 2016-03-17T18:25:55.830 回答