gpt4 book ai didi

c - feof(FILE *) 内置函数中的段错误

转载 作者:行者123 更新时间:2023-11-30 15:52:44 26 4
gpt4 key购买 nike

void suffix_strip(FILE *fp)
{
FILE *fp1;
char word[20],ch;
int len;
int i=0,j;
fp1=fopen("sstrip.txt","a+");
while(!feof(fp))
{
ch=fgetc(fp);
if(ch!='\n' && ch!='\0' && ch!=' ' && ch!='.')
{
word[i]=ch;
i++;
}
else
{
word[i]='\0';
i=0;
len=strlen(word);
if(len>3)
{
if(word[len-3]=='i' && word[len-2]=='n' && word[len-1]=='g')
{
word[len-3]='\0';
}
else if(word[len-2]=='e' && word[len-1]=='d')
{
word[len-2]='\0';
}

fputs(word,fp1);

if(count==0)
{
in[count]->freq=1;
strcpy(in[count]->word,word);
count++;
}
else
{
for(j=0;j<count;j++)
{
if(strcmp(in[j]->word,word)==0)
{
in[j]->freq++;
goto x1;
}
}
in[count]->freq=1;
strcpy(in[count]->word,word);
count++;
x1:
printf("");

}
fputc(' ',fp1);
}
else
{
fputs(word,fp1);
if(count==0)
{
in[count]->freq=1;
strcpy(in[count]->word,word);
count++;
}
else
{
for(j=0;j<count;j++)
{
if(strcmp(in[j]->word,word)==0)
{
in[j]->freq++;
goto x2;
}
}
in[count]->freq=1;
strcpy(in[count]->word,word);
count++;
x2:
printf("");

}
fputc(' ',fp1);
}

}

}
display();

}

/*

在上面的函数中,当我进入While循环检查条件时

while(!feof(fp))

运行 MinGW GCC 的 DevC++ IDE 会抛出段错误,但相同的代码在 VC++ 6.0 上运行时可以成功运行,没有任何错误。可能是什么问题???是因为我将文件指针作为参数传递吗???GCC 编译器对于 EOF 表示还有一些其他约定???如果是因为参数传递,那么使用相同的参数传递方式(即传递文件指针)来解决它的正确方法是什么?*/

最佳答案

  1. 确保文件打开成功。也许您正在将 NULL 传递给 feof()
  2. 在执行 I/O 之前不要调用 feof()在 I/O 失败时调用它。
  3. fgetc() 返回一个 int而不是一个 char。这是因为它还可以返回非字符的特殊值EOF

关于c - feof(FILE *) 内置函数中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14237342/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com