C语言读取代码顺序不对

#include<stdio.h>
#include<time.h>
#include<string.h>
#include<stdlib.h>
#define line 1626
#define count 60
int f(int x){
srand(time(0));
x=rand();
return x;
}
int t(int l){
int i,j,k,m=0,n=0,h,p=0;
char ch[line][count];
char result[count]={'0'},answer[count];
FILE*fp1;
fp1=fopen("D:\初中英语单词库.txt","r");
for(i=0;i<line;i++){
fgets(ch[i],count,fp1);
}
printf("please input l:");
scanf("%d",&l);
for(j=0;j<count;j++){/寻找两个空格之间的中文意思的坐标/
if(ch[l][j]==' '&&n==0){
m=j;
n++;
}else if(ch[l][j]==' '&&n==1){
k=j;
n++;
break;
}
}
n=0;
for(j=m+1;j<=k-1;j++){
printf("%c",ch[l][j]);
}
printf("\n");
strncpy(result,ch[l],m);
printf("%s\n",result);/检查复制的单词是否正确/
Z:printf("please input:");/将输入的单词存放在数组中/
gets(answer);
printf("%s\n",answer);
if(strcmp(answer,result)==0){
if(n==0){
p=100;
}else if(n==1){
p=60;
}
h=f(0)%4;
switch(h){
case 0:printf("Very good!\n");break;
case 1:printf("Excellent!\n");break;
case 2:printf("Nice work!\n");break;
case 3:printf("Keep up the good work!\n");break;
}
}else {
h=f(0)%4;
switch(h){
case 0:printf("No. Please try again.\n");break;
case 1:printf("Wrong. Try once more.\n");break;
case 2:printf("No. Don't give up!\n");break;
case 3:printf("Not correct. Keep trying.\n");break;
}
n++;
if(n==1){
goto Z;
}
if(n==2){
printf("%s\n",result);
}
}
fclose(fp1);
return p;
}
int main(){
int x,m;
printf("please input x:");
scanf("%d",&x);
m=t(x);
printf("%d",m);
return 0;
}

img


在please input l:后面输入l的值之后按下回车键,就成图片里这样了,相当于answer第一次输入被跳过了,把gets改成scanf也不行,还是会跳过第一次输入,有人知道这是怎么回事吗

ch数组没定义吧

打印ch数组看看读进去了没有

scanf()后面加一句fflush(stdin);//刷 新缓冲区