我应该怎么做才能只打印文件中重复的单词。我是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/

10-10 18:22