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();ç建议å¾å¥½ï¼æ¸ é¤è¾å ¥ç¼å²åºçåå¾åå°±ä¸ä¼å½±åä¸æ¬¡è¾å ¥äºã
å¦æ循ç¯ä½å 没æ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()跳过,仅供参考