c - 为什么这段 C 代码会崩溃?

标签 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;
}

最佳答案

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

scanf("%c", &needle);

此外printf不会打印NULL 修改如下;

printf("NULL");

希望这有帮助。

关于c - 为什么这段 C 代码会崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36068615/

相关文章:

c - 静态代码分析器无法识别正在使用的 C int 类型

c - 在C编程中将垂直条转换为水平条

c++ - 使用输入参数作为输出

c++ cout和char-pointers,我缺少的指针

代码在 Debug模式下工作正常,但在正常运行时失败

c - 奇怪的 malloc 崩溃问题

c - fopen 和 sprintf 的问题

Javascript:为函数中创建的表格的偶数行和偶数单元格着色

php - 使用函数和 if else 的多个搜索表单

c - C语言中的指针的解释(也可以操纵数组)