C语言 关于字符数组函数gets()函数的应用

void input(int num[],char name[][50])
{
int i;
for (i=0; i<N; i++)
{
printf ("enter the name of worker %d:\n",i+1);
getchar(); //这里为什么要多这一步才能执行gets(name[i])这一步??
gets(name[i]);
printf ("enter the munber of worker:\n");
scanf ("%d",&num[i]);

}

} }

这个代码写得不好,网友的回答也有问题。
如果循环体内没有getchar,在输入字符串后,再输入整数时,会在输入缓冲区遗留一个回车键,影响下次循环。
网友提出把getchar改成flushall();的建议很好,清除输入缓冲区的垃圾后就不会影响下次输入了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-09-05
这个代码写得不好.第一个getchar是为了清除上一个gets剩下的\n.但是第一次调用getchar的时候,第一个字符串就会丢失一个字符.应该把getchar改成flushall();追问

多谢!

第2个回答  2014-09-05
getchar()应该放在 gets(name【i】)后面 因为getchar()是一个堵塞函数 这里他的作用就是 接受你输入后打的回车 不用getchar你是无法接受的
第3个回答  2014-09-05
gets()遇到回车就运行结束了,可能是你的输出里带有回车导致gets()跳过,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网