#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; }