8.1 单字符I/O:getchar()和putchar()

正如您在第7章“C控制语句:分支和跳转”中所见到的,getchar()和putchar()每次输入和输出一个字符。您可能觉得这种方法是一种很笨的处理问题的方法。当然了,您可以很容易地读取多于单个字符的一组数据,但是该方法确实适合计算机的能力。而且,此方法是大多数处理文本(即普通单词)的程序的核心。要回想起这些函数的工作方式,请阅读程序清单8.1,这是一个非常简单的例子。该例子要完成的一切就是获取从键盘输入的字符并将其发送至屏幕。该过程称为输入回显(echoing the input)。它使用了一个while循环,该循环在遇到#字符时终止。

程序清单8.1 echo.c程序

阅读 ‧ 电子书库

广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元

阅读 ‧ 电子书库

ANSI C将stdio.h头文件与使用getchar()和putchar()相关联,这就是我们在程序中将该文件包含在内的原因(典型地,getchar()和putchar()不是真正的函数,而是定义为预处理器宏,这一主题我们将在第16章“C预处理器和C库”中进行讨论)。运行此程序将产生如下所示的交互式结果:

阅读 ‧ 电子书库

看过此程序运行后,您可能想知道在回显输入之前为什么必须键入完整的一行。您可能还想知道是否存在更好的方法来终止输入。使用一个特定字符(例如#)终止输入会使您不能在文本中使用该字符。要解答这些问题,让我们来学习C程序对键盘输入的处理方式。特别地,我们来研究缓冲和标准输入文件的概念。