C 为什么我的代码中会出现分段错误?
我总是遇到分割错误,我怎么才能修复它。我尝试了更多的变体,但每次使用if语句时都会出现分段错误。我的代码与此类似: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
#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个字符的数组。