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, проверяя условие
в то время как (! feof (fp))
IDE DevC++, работающая с MinGW GCC, выдает ошибку сегментации, но тот же код при запуске на VC++ 6.0 успешно выполняется без каких-либо ошибок. в чем может быть проблема??? это потому, что я передаю указатель файла в качестве аргумента??? у компилятора GCC есть другие соглашения для представления EOF??? если это из-за передачи аргумента, то каким может быть правильный способ решить эту проблему, используя тот же способ передачи параметров (т.е. передачу указателя файла) ?? */
while()
, кромеch=fgetc(fp);
, и посмотрите, останется ли проблема. Могу поспорить, что вы превысите некоторые границы массива, что испортит ваш стек (включая аргументFILE *fp
). - person Andreas Fester   schedule 09.01.2013