c - 段错误(核心转储)字符数组

标签 c segmentation-fault

我试图从用户那里读取一个句子并将其放入一个数组中,其中每个字母保存一个字符值。每次运行该程序时,我都可以输入句子,但之后会出现“段错误(核心转储)”。所有这些都发生在从 main 调用的函数内。

int words(char sentence[]){
int i=0;
    printf("Please enter your favorite sentence(max 100 characters).\n");
    scanf("%c", &sentence);
            while(sentence != "." && sentence != "!"){
            i++;
            scanf("%c", &sentence[i]);
            }
    printf("%d", i);
    return i;
}

最佳答案

当您使用 -Wall -Wextra 进行编译时,编译器会说什么。如果不带警告进行编译,就不能指望正确编写 C 代码。每个人都说你可以把 C 代码搞砸得多么严重,它可以让你做任何事情。确实如此,但警告可以为您提供帮助。

我不知道为什么人们要求你去 gdbvalgrind。对我来说,这段代码永远不应该被执行并期望它是正确的。我的编译器发出这些警告:

words.c: In function ‘words’:
words.c:6: warning: format ‘%c’ expects type ‘char *’, but argument 2 has type ‘char **’
words.c:7: warning: comparison with string literal results in unspecified behavior
words.c:7: warning: comparison with string literal results in unspecified behavior

修复这些警告,如果问题仍然存在,请返回。或者,如果您不明白这些警告的含义,请提出相关的具体问题。

关于c - 段错误(核心转储)字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33662282/

相关文章:

图实现中的 C 运行时错误

c - 将字符分配给二维数组[跳棋]

c - 在c中生成条形码BMP

c - C 中位域和 union 的大小

c - 收到 SIGSEGV 错误。找不到负责的指针

c - 将 memcpy 与 void 指针一起使用时出现段错误 - C

c - 如何从文件中获取 int - string - float?

c - 定义变量 "C programming"

linux - ubuntu 升级到 14.04 后 apt-get 坏了

c - fclose() 导致段错误