我一直收到段错误,我该如何解决。我尝试了更多变体,但每次使用 if 语句时都会出现段错误。我的代码与此类似:
#include <stdio.h>
#include <string.h>
int main()
{
int i;
char *sentence[300];
fgets(*sentence,300,stdin);
int length=strlen(*sentence);
for(i=0;i<length;i++){
if(sentence[i]=="a")
printf("qwer");
else if(sentence[i]=="b")
printf("asdf");
else if(sentence[i]=="c")
printf("zxcv");
// ...
}
return 0;
}
最佳答案
你做错的第一件事是:
char *sentence[300];
看起来您正在尝试创建一个包含 300 个字符的缓冲区,但实际上您正在创建一个包含 300 个字符的指针数组。将其更改为:
char sentence[300];
然后你想改变这个:
fgets(*sentence,300,stdin);
到
fgets(sentence,sizeof(sentence),stdin);
那你想改
int length=strlen(*sentence);
到
int length=strlen(sentence);
您需要很好地理解字符串在 C 中的工作原理。如果您还没有读过一本很好的 C 入门书籍,请从那里开始。 C 不是您仅通过阅读网络上的随机页面和 StackOverflow 就能掌握的东西。
关于c - 为什么我的代码会出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54953237/