c语言有关数组的问题

输入aa bb 回车
输入cc dd 回车
#include <stdio.h>
void main ()
{
char a1 [5] ,a2[5] ,a3[5] ,a4[5];
scanf("%s%s",a1,a2);
gets(a3) ; gets(a4);
puts(a1); puts(a2);
puts(a3); puts(a4);
}帮忙分析一下这个题的结果

scanf 遇到回车 '\n' 就返回了, 所以 '\n‘还在既存器当中,gets(a3)读取的是'\n',gets(a4)读取的是cc dd,

解决办法如下 :在scanf以后清空stdin寄存器

#include <stdio.h>
void main ()
{
char a1 [5] ,a2[5] ,a3[5] ,a4[5];
scanf("%s%s",a1,a2);
fflush(stdin);
gets(a3) ; gets(a4);
puts(a1); puts(a2);
puts(a3); puts(a4);
}

经验证 正确
输入 aa bb 回车
cc 回车
dd 回车
输出
aa
bb
cc
dd
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-09
warning: the `gets' function is dangerous and should not be used.
a3数组 只得到一个回车, cc dd被a4接收
主要是scanf不吸收回车