#include <stdio.h> #include <string.h> #define S 50 //假定次數分界線爲50 int main() { FILE * fp=fopen("Request.txt","r"); struct date{ char name[10]; int sum=0; //用戶名出現次數 }n[20000]; struct man{ char name[10]; //黑客用戶名 }hac[20]; int i=0,j,k=0,sign; while(fscanf(fp,"%s %*s %*s",&n[i].name)!=EOF){ sign=1; for(int z=0;z<k;z++)if(strcmp(hac[z].name,n[i].name)==0){sign=0;i--;break;}//碰到已經記錄的黑客名跳過 for(j=0;j<i&&sign;j++) //新讀入的(非黑客)是否已經出現過 if(strcmp(n[i].name,n[j].name)==0){ //若是已經出現過 n[j].sum++; if(n[j].sum>=S)strcpy(hac[k].name,n[j].name),k++; //記錄新黑客用戶名 break; } if(j==i)n[i].sum++;//若是沒有出現過 i++; } printf("%d\n",k);//輸出黑客數目 for(int j=0;j<k;j++) printf("%s\n",hac[j].name);//輸出名字 fclose(fp); return 0; }