我写了这段代码,但看起来很糟糕。此功能打印每个单词重复多少次。有没有另一种方法可以做到简单易懂的相同功能?如何从C上的文本中统计不同的单词?
int diffrentwords(FILE *myinput){
int i,j,words[40],difwords=0;
char text[40][40];
char a;
rewind(myinput);
for(i=0;i<40;i++){
words[i]=0;
for(j=0;j<40;j++)
text[i][j]=' ';
}
for (i=0;i<40;i++){
if(feof(myinput))
break;
for(j=0;j<40;j++){
a=fgetc(myinput);
if(a!=' ')
text[i][j]=a;
else{
text[i][j]='\0';
break;
}
}
}
text[i][0]='\0';
i=0;
for(i=0;text[i][0]!='\0';i++)
for(j=i+1;text[j][0]!='\0';j++)
if(text[j][0]!=' ' && !(strcmp(text[i],text[j]))){
words[i]++;
text[j][0]=' ';
}
for(i=0;text[i][0]!='\0';i++)
if(text[i][0]!=' '){
printf("%s \t %d\n",text[i],words[i]+1);
difwords++;
}
printf("\n");
return difwords;
}
评论有助于使代码更易于理解,在索引0匹配任何单词索引9字算作是独一无二的。 – AsksAnyway
文件中的单词是否在一行上? – user3386109
@ user3386109是的,我想! – user3599630