为什么我的代码中出现分段错误?

时间:2019-03-01 22:35:02

标签: c

我不断遇到细分错误,该如何解决。我尝试了更多的变体,但是每次使用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;
}

1 个答案:

答案 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。