Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么我的代码中会出现分段错误?_C - Fatal编程技术网

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

C 为什么我的代码中会出现分段错误?,c,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语句时都会出现分段错误。我的代码与此类似:

#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;
}
#包括
#包括
int main()
{
int i;
char*句[300];
fgets(*第300句,标准文本);
整数长度=strlen(*句);

对于(i=0;i你做错的第一件事是:

char *sentence[300];
看起来您正试图创建一个包含300个字符的缓冲区,但实际上您正在创建一个包含300个字符指针的数组。请将其更改为:

char sentence[300];
然后您要更改此选项:

fgets(*sentence,300,stdin);

那你想换衣服吗

int length=strlen(*sentence);


你需要很好地理解字符串在C中的工作原理。如果你没有读过一本很好的C入门书,就从这里开始吧。C不是你仅仅通过阅读web上的随机页面和StackOverflow就能学到的东西。

你做错的第一件事是:

char *sentence[300];
看起来您正试图创建一个包含300个字符的缓冲区,但实际上您正在创建一个包含300个字符指针的数组。请将其更改为:

char sentence[300];
然后您要更改此选项:

fgets(*sentence,300,stdin);

那你想换衣服吗

int length=strlen(*sentence);


你需要很好地理解字符串在C中的工作原理。如果你还没有读过一本很好的C入门书,那么就从这里开始吧。你不会仅仅通过阅读web上的随机页面和StackOverflow来学习C。

程序中未定义行为的第一个实例是
fgets(*语句,
*语句
未初始化。什么编译器?是否启用了所有编译器警告?
char*语句[300];
声明了指向
char
的300个指针数组,而不是300个字符的数组。程序中未定义行为的第一个实例是
fgets(*语句,
*语句
未初始化。什么编译器?是否启用了所有编译器警告?
char*语句[300];
声明指向
char
的300个指针数组,而不是300个字符的数组。