c-fgets分割错误

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

我已经编写了一个函数,它应该返回一个输入文本字符串,并用字符串结尾字符替换新行字符。由于某种原因,在fgets过程中出现分段错误(它从未达到test2)。我问过的人都无法解释。有人知道我做错了什么吗

p、 我这样调用这个函数:

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';