int main(){
char a[5][10];
int i,num;
scanf("%d",&num);
for(i=0;i<num;i++)
gets(a[i]);
for(i=0;i<num;i++)
puts(a[i]);
return 0;
}
以上代码是按照某教科书打出来的,但是我在运行时始终只能对num-1行赋值。。调试后发现,第一行被跳过了。。问了大佬,可能是对num赋值时,回车键漏下来,并建议收一个回车。。。(其实我不懂怎么收回车。。/(ㄒoㄒ)/~~)但是总得按照人家的意思试试,于是我就创建了一个新的数组。。
int main(){
char a[5][10];
char ch[1];
int i,num;
scanf("%d",&num);
gets(ch);
for(i=0;i<num;i++)
gets(a[i]);
for(i=0;i<num;i++)
puts(a[i]);
return 0;
}
我创建了一个ch,因为回车会漏下来,所以就用ch来接收。。。问题算是解决了。。但是这样处理总感觉不太对劲。。但我只能做到这里了/(ㄒoㄒ)/~~。。。
/第一次修改/
今天学到了一个新函数。。fflush();可以解决这个问题。。。
int main(){
char a[5][10];
int i,num;
scanf("%d",&num);
fflush(stdin);
for(i=0;i<num;i++)
gets(a[i]);
for(i=0;i<num;i++)
puts(a[i]);
return 0;
}
fflush(stdin);可以清除输入缓存区的东西。。用了这个就可以防止回车漏下来了o( ̄▽ ̄)ブ