c-fgets分割错误
我已经编写了一个函数,它应该返回一个输入文本字符串,并用字符串结尾字符替换新行字符。由于某种原因,在fgets过程中出现分段错误(它从未达到test2)。我问过的人都无法解释。有人知道我做错了什么吗 p、 我这样调用这个函数:c-fgets分割错误,c,segmentation-fault,fgets,C,Segmentation Fault,Fgets,我已经编写了一个函数,它应该返回一个输入文本字符串,并用字符串结尾字符替换新行字符。由于某种原因,在fgets过程中出现分段错误(它从未达到test2)。我问过的人都无法解释。有人知道我做错了什么吗 p、 我这样调用这个函数: char search[256]; getSearch(search); //getSearch函数 char* getSearch(char searchText[256]) { printf("test1\n"); printf("Search t
char search[256];
getSearch(search);
//getSearch函数
char* getSearch(char searchText[256]) {
printf("test1\n");
printf("Search text: ");
fflush(stdout);
fgets(searchText, 256, stdin);
printf("test2");
int i;
for (i=0; searchText[i] != '\0'; i++) {
if (searchText[i] == '\n') {
searchText[i] = '\0';
i--;
}
}
char *search = searchText;
return (search);
}
请在您的问题中提供一个完整的、最少可编译的程序来演示此行为,以便其他人可以编译、运行和验证此问题。同时更改printf(“test2”)代码>到
printf(“test2\n”)
您可能会发现您的分段错误根本不在fgets()中。@paugriffiths:另外,请告诉我们您向程序提供了什么输入。确保fgets(searchText,256,stdin)
的返回值不为NULL
。是getSearch()
在被调用之前正确地原型化/声明?您可以使用size\t length=strlen(searchText);if(len>0&&searchText[len-1]='\n')searchText[len-1]='\0';
。