C语言getchar()解析

再阅读K&R的C语言时,发现自己对getchar()函数的理解还没到位;

书上10页给出了一个代码:

 首先 定义了一个int的变量c 我们已知,getchar的返回值为一个整数,所以c也定义为int。

#include <stdio.h>
int main()
{
	int c;  //因为 getchar() 返回类型为 int
	while ((c= getchar()) != EOF) 
	{
		printf("%c", ch);  
		
	}

	return 0;
}

当代码运行之后,我不小心多输入了一个字母,和我预期的结果不同,我原以为getchar只会提取到第一个字母,也就是只会输出s这一个字母 没想到全部输出了

随后进入代码调试可知,最开始缓冲区没有数据,我输入sda后第一次c的值就是s,此时执行输出,随后进入while循环:getchar()又从缓冲区拿到了第二个字母进行判断 不是EOF 所以此时继续循环,现在的c为d了 仍然会输出,同理 a也是这么来的。问题就处在他会判断while 而getchar()是从缓冲区提取一个字符,为了成功判断必然会提取我缓冲区的第二个字符d,从而引发全部输出的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值