为什么这个C代码会崩溃?

时间:2016-03-17 18:15:54

标签: c function pointers crash strchr

有人可以向我解释为什么这段代码会不断崩溃。 一切似乎都很好。

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

1 个答案:

答案 0 :(得分:1)

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

scanf("%c", &needle);

同时printf无法打印NULL 修改如下;

printf("NULL");

希望这有帮助。