[求助]一个奇怪的问题
程序代码如下:
#include <stdio.h> int i; main() {for(i=0;i<10;i++) putchar(getchar());}
本意是输入10个字母并回车,输出为10个字母,但程序运行结果如下:
1(输入1并回车)
1(输出)
2(输入2并回车)
2(输出)
3(输入3并回车)
3(输出)
4(输入4并回车)
4(输出)
5(输入5并回车)
5(输出)
为何到5就停止了呢?不是到10呢?郁闷,请大侠指教,谢谢!
这是因为你用了宏 getchar(),因为它并不是敲一个按键就表示结束,而是碰到回车键后才表示结束,
这样你为了执行完putchar(getchar());如果第一个按键不是回车,你就要敲两个以上的键。执行完本句后,你只读了一次
键盘缓冲,而后面的键直到回车键继续留在缓冲中,你下次循环的时候,程序看键盘缓冲区中还有数据,就不会等你在敲
键盘接着读剩下的按键值!所以不是十。如果你每次只敲回车就可以是十次,如果你多敲几个别的键在敲回车,就少与五
次了,解决方法一,你可以在putchar(getchar());后加入fflush(stdin);清空输入流
二,你把putchar(getchar());改为putchar(getch());就可以了,因为函数getch()响应每一次按键!!!
你可以在循环中加一条语句看程序执行的次数就可以了!!!printf("%d",i);
[此贴子已经被作者于2004-08-05 16:28:15编辑过]
