do while 循环有关问题
do while 循环问题最近碰到一个问题,其中用到基本的do {}while( )循环;它的测试小程序为#include stdio.
do while 循环问题
最近碰到一个问题,其中用到基本的do {}while( );循环 ;它的测试小程序为
#include <stdio.h>
int main(
{
char k;
do
{
printf("你还要继续分配资源么? y or n \n");
scanf("%c",&k);
}while(k =='y');
return 0;
}
我想的是:输入y就会继续循环里面的东西,而输入其他的就会结束循环!
问题:无论我输入y 还是 n 程序都会结束!
测试: 当我输入n时,程序马上结束!这与我想的相同,,,,但是当我输入y时它第二次进入循环时, 执行scanf("%c",&k);
语句时,它会自动付一个值,完全不理会我!!然后就结束循环!!不知道是为什么!
跪求具体原因!!
[解决办法]
用scanf,getchar等读取字符串或者字符的时候容易出现缓冲区残留'\n'的情况。
于是下次读取的时候,就会读取到'\n'.
为了防止这种情况,可以在scanf/getchar函数之前加下面三条语句之一:
标准:rewind(stdin);
windows扩展:fflush(stdin);
暴力:stdin->_cnt=0;
所以你的代码改为:
C/C++ code#include <stdio.h>int main({ char k;do{printf("你还要继续分配资源么? y or n \n");scanf("%c",&k);rewind(stdin);}while(k =='y'); return 0;}
[解决办法]
[解决办法]
正解
[解决办法]
[解决办法]
scanf("%c",&k);
把这句改成scanf("%*c%c", &k);试试。
[解决办法]
[解决办法]
#include <stdio.h>
#include <conio.h>
int main(
{
char k;
do
{
printf("你还要继续分配资源么? y or n \n");
k = getch();
}while(k =='y');
return 0;
}
[解决办法]
是‘\n’的问题。。。
[解决办法]
顶起来,多查查标准库
[解决办法]
fflush是不行了,它只作用于输出。
[解决办法]
先执行再循环