只看int main里面,那个gets我输入的时候会出现问题,改成scanf那个形式的就没有问题,为什么

#include<stdio.h>
typedef struct oooooo{
char a[100];
int r;
}oj;
void j(oj p,int b){
int c,d,f=0;
oj e;
for(c=0;c<b;c++){
for(d=0;d<b-1;d++){
if((p+d)->r<(p+d+1)->r){
e=
(p+d);
(p+d)=(p+d+1);
*(p+d+1)=e;
}
}
}
for(c=0;c<b-2;c++){
if((p+c)->r+(p+c+1)->r+(p+c+2)->r>=4800){f++;c=c+2;}
}printf("%d",f);
}

  1. 具体就是是我想输入一个a 在输入一个0,一个b, 再一个1 ,以此类推到g,如果我里面写gets就会导致我的数字输入不进去,因为我这道题只用了数字,所以我也只知道我数字没输入进去,都变成0了,但是用scanf就输入正常,我不能理解

int main(){
oj c[1000];
int i[1000];
int d,e,f;
scanf("%d",&d);
for(f=0;f<d;f++){
scanf("%d",&i[f]);
for(e=0;e<i[f];e++){
gets(c[e].a);
scanf("%d",&c[e].r);
}
j(c,i[f]);
}return 0;
}

http://c.biancheng.net/view/233.html