我不断遇到细分错误,该如何解决。我尝试了更多的变体,但是每次使用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;
}
答案 0 :(得分:2)
您做错的第一件事是:
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的入门书籍,请从那里开始。仅通过阅读Web和StackOverflow上的随机页面就不会使用C。