读书人

实现循环使用一个功能,该如何解决

发布时间: 2012-02-12 17:16:33 作者: rapoo

实现循环使用一个功能
while(flag)
{
printf( "input a hex: ");
gets(a);
printf( "deceminal is %lf:\n ",tran(a));
printf( "countine or not(Y/N): ");
getchar();//加这句能改善,但只有输入‘ n’时才能退。
c=getchar();//getchar()返回int型,所以c为int型
if(c== 'n '||c== 'N ')
flag=0;
}

这是输入16进制转10进制的一部分,我想通过这个来再次使用该功能,而不用重新执行程序,但是getchar();这句有点讲不通。但是没有它时,会在printf( "countine or not(Y/N): ");时一直执行到上面的printf( "input a hex: ");而不等待输入Y OR N。这是怎么回事?我在其他程序中使用类似的循环功能时,也会这样。
有人说是没清理内存,加一句(fflush(stdin))语句就好了。我试过确实是好了,但是不明白。

[解决办法]
网上看看输入输出缓冲的资料
[解决办法]
没有清空输入缓冲区的缘故的,这和你使用的getchar函数有关系的
[解决办法]
fflush(stdin)),将所有从键盘输入的字符(包括回车)都会清空。

读书人网 >C语言

热点推荐