codeblocks运行的输出结果总是无数行000,感谢各位大神

#include
#include
#include
using namespace std;
struct E{
char name[101];
int age;
int score;
}buff[1000];
bool cmp(E a,E b){
if(a.score!=b.score)
return a.score<b.score;
int temp=strcmp(a.name,b.name);
if(temp!=0)
return temp<0;
else
return a.age<b.age;
}
int main(){
int n;
while(scanf("%d",&n)!=EOF){
for(int i=0; i<n;i++){
scanf("%s %d %d",buff[i].name,&buff[i].age,&buff[i].score);
}
sort(buff,buff+n,cmp);
for(int j=0;j<n;j++){
printf("%s %d %d\n",buff[j].name,buff[j].age,buff[j].score);
}
}
return 0;
}


这是输入后
图片说明
这是输出后
图片说明

上面的代码可读性太差,重新发一下

 #include <stdio.h>
#include <algorithm>
#include<string.h>
using namespace std;
struct E{
      char name[101];
      int age;
      int score;
}buff[1000];
bool cmp(E a,E b){
      if(a.score!=b.score)
            return a.score<b.score;
      int temp=strcmp(a.name,b.name);
      if(temp!=0)
            return temp<0;
      else
            return a.age<b.age;
}
int main(){
      int n;
      while(scanf("%d",&n)!=EOF){
            for(int i=0; i<n;i++){
                  scanf("%s %d %d",buff[i].name,&buff[i].age,&buff[i].score);
            }
            sort(buff,buff+n,cmp);
            for(int j=0;j<n;j++){
                  printf("%s  %d  %d\n",buff[j].name,buff[j].age,buff[j].score);
            }
      }
       return 0;
}

while(scanf("%d",&n)!=EOF){
->
if(scanf("%d",&n)!=EOF){

另外
getchar(); //加上
scanf("%s %d %d",buff[i].name,&buff[i].age,&buff[i].score);

我测试好像没有什么问题啊。。。。。。。。。。

dev5.11环境下仿佛没有问题