scanf() 在这里用有点不恰当,scanf()在接受时,是不接受 回车 和 空格 的.
如果你用它在循环时 第二次不会接受 回车 或 空格,这点要注意.
但是getchar()就不是了,只要是你按键盘就会被接受,但是是先存在缓冲区里.
你循环一次就在缓冲区里拿一个.
所以要有清缓冲区的语句fflush(stdin);
原因是你那个scanf("%c",&i)必须在输入后,还得按回车键,就在程序第二次循环中默认你又输入了回车,显然不等于'y',所以就退出来了.
怎么不懂啊
你能讲详细的吗
原因是你那个scanf("%c",&i)必须在输入后,还得按回车键,就在程序第二次循环中默认你又输入了回车,显然不等于'y',所以就退出来了.
怎么不懂啊
你能讲详细的吗
楼上的几位能不能说明白了,因为输入字符被缓冲,只有按回车才发送给计算机,i只接受了字符,回车还在缓冲中呆着呢,你要把缓冲中的回车清除掉就可以了
#include <stdio.h>
#include <conio.h>
int main()
{
char i;
do
{
fflush(stdin);
printf("hello the word\n");
scanf("%c", &i);
}while(i == 'y');
getch();
return 0;
}
[此贴子已经被作者于2006-5-1 17:30:50编辑过]