getchar()、putchar()和EOF

       主要在看K&R的The C Programming Language,对于1.5节“字符输入/输出”理解不透,getchar的原理没有搞清楚,EOF的值知道是-1,但是对于

	 int c;
	while ((c = getchar()) != EOF)
       		putchar(c);

每输入一行,回车一下,会输出上一行内容,不知道什么时候才能结束。最傻的方法是,输入-1,当然程序还是没有结束。

       后来查资料,才发现对于getchar(),一般都会有两点总结,先附上。


一、getchar()的两点总结

1. getchar()是以行为单位进行存取的。

当用getchar进行输入时,如果输入的第一个字符为有效字符(即输入不是文件结束符EOF,Windows下为组合键Ctrl+Z, Unix/Linux下为组合键Ctrl+D),那么只有当最后一个输入字符为换行符'/n'(也可以是文件结束符EOF,EOF将在后面讨论)时, getchar才会停止执行,整个程序将会往下执行。

例如,上面的代码,就是自己输入时出出现的情况,每输入一行,再按回车,就会输出相应的内容。

这里不能忘了,系统输出时,还有一个”回车符“,这也是为什么我们看到新的输入提示符出现在新的一行,这是回车符的效果。从另外一点也能反应这个问题,就是书上1.5.2讲的”计算字符的个数“,我们会发现总个数是加上回车符个数的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值