C 分段错误:调用词干函数时为11

C 分段错误:调用词干函数时为11,c,segmentation-fault,C,Segmentation Fault,我的程序在完成第一行txt文件时停止。程序运行良好,无需添加过滤功能。有人能指出错误吗 输出: 项目 古腾堡 电子书 属于 艾丽斯 s 冒险 在里面 仙境 通过 莱维 卡罗尔 分段错误:11 该程序的代码如下所示: int main(无效){ 字符行[MAXLINE]; FILE*text=fopen(“test_1.txt”,“r”); while(fgets(line,sizeof(line),text)!=NULL){ //读到最后 如果(strstr(行,结束)!=NULL)中断;

我的程序在完成第一行txt文件时停止。程序运行良好,无需添加过滤功能。有人能指出错误吗

输出:


项目
古腾堡
电子书
属于
艾丽斯
s
冒险
在里面
仙境
通过
莱维
卡罗尔
分段错误:11

该程序的代码如下所示:

int main(无效){
字符行[MAXLINE];
FILE*text=fopen(“test_1.txt”,“r”);
while(fgets(line,sizeof(line),text)!=NULL){
//读到最后
如果(strstr(行,结束)!=NULL)中断;
//标记字符串
char*下_线=strlwr(线);
char*pch=过滤器(strtok(行“,.-?”);
while(pch!=NULL){
printf(“%s\n”,pch);
pch=过滤器(strtok(NULL,“,.-?”);
}
}
fclose(文本);
}
字符*过滤器(字符*字){
int k=词干(单词,0,strlen(单词)-1);
字[k+1]='\0';
返回词;
}
char*strlwr(char*s){
char*tmp=s;
对于(;*tmp;++tmp){
*tmp=tolower((无符号字符)*tmp);
}
返回s;
}

在此循环的最后一个循环中

while (pch != NULL){
    printf("%s\n", pch);
    pch = filter(strtok(NULL, " ,.-?'"));
}
您正在向“filter”函数传递NULL引用, 这可以确保当您获得NULL引用时,它不会运行

   while (pch != NULL){
        pch = filter(pch);
        printf("%s\n", pch);
        pch = strtok(NULL, " ,.-?'");
    }

什么是既是变量又是函数的
stem
?函数
filter()
正在使用未知函数
stem()
提供的索引写入要在
main
中拆分的字符串。请发布显示问题的最短完整代码以及为输入指定的行,以及程序应该做什么的描述。我正试图用我的过滤函数更新pch。传入一个单词字符串并从stem函数中获取一个新词。很抱歉,我无法猜出
stem()
函数的作用。它试图缩小单词的大小。e、 苹果变成“苹果”,爱变成“爱”