头疼的问题,关于getchar()和putchar()
/*guess.c--一个拖沓且错误的猜数字程序*/#include <stdio.h>
int main(void)
{
int guess = 1;
char response;
printf("选一个1到100的整数,我会尽力猜出来的.\n");
printf("如果我的猜测是对的,用y回答;如果我的猜测是错的,用n回答.\n");
printf("Uh.你的数字是%d?\n", guess);
while ((response = getchar()) != 'y') //获取相应
{
if (response == 'n')
printf("那么,是%d?\n", ++guess);
else
printf("对不起,我只识别n或y.\n");
while (getchar() != '\n')
continue; //跳过剩余的输入行
}
printf("我知道我可以做到!\n");
return 0;
}
在这个程序中有两个getchar()
假如我输入的是123[enter](按下enter键)
那么在缓冲区内存储的就是 123 和一个换行符
然后第一个getchar()识别1并赋给response, 那么进入循环后的getchar()是拿1和'\n'比还是用2来比?
还有一个问题是它用
while (getchar() != '\n')
continue;
来跳过剩余的输入行, 其他的可以理解 ,为什么缓冲区内的换行符也能跳过?