我应该怎么做才能只打印文件中重复的单词。我是C语言的初学者。
这是我的代码:
#include <stdio.h>
#define max 100
main(){
FILE *fpointer;
char ch[max],str[max][max];
int i = 0,j = 0,count = 0;
int a,b;
fpointer = fopen("1.txt","r");
if(fpointer == NULL){
printf("Error!");
return 0;
}
while(fscanf(fpointer,"%s",ch)!=EOF){
strcat(str[i++],ch);
strcat(str[i++]," ");
count++;
}
for(a=0;a<count*2;a=a+2){
for(b=0;b<count*2;b=b+2){
if(strcmp(str[a],str[b])==0){
printf("%s\n",str[b]);
}
}
}
fclose(fpointer);
return 0;
}
输入的示例是“明亮的小星星在黑暗的星星中发光”
该程序的输出为“闪耀小星星闪耀,暗星闪耀”。请帮我打印
仅重复的单词。特纳克斯
最佳答案
在您的内部循环中,而不是从列表的开头开始,而是在当前元素之后开始一个元素。这样,您就不会将元素与其自身进行比较,也不会将任何两个元素进行两次比较。
for(a=0;a<count*2;a=a+2){
for(b=a+2;b<count*2;b=b+2){ // b=a+2 instead of b=0
if(strcmp(str[a],str[b])==0){
printf("%s\n",str[b]);
}
}
}
输出:
shine
star
关于c - 从C中的文件中打印所有重复的单词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32332080/