您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C语言入门经典(第四版)10-基本输入和输出操作
C入门经典(第4版)第10章基本输入和输出操作本章将详细介绍键盘输入、屏幕输出和打印机输出。本章的内容相当简单,但要记住许多东西。不过不用熟记,需要时可以再回来参考本章的内容。与大多数现代编程语言一样,C语言也没有输入输出的能力,所有这类操作都由标准库中的函数提供。前面各章介绍的许多这类函数提供了键盘输入和屏幕输出的功能。C入门经典(第4版)10.1输入和输出流前面章节主要使用scanf()函数从键盘输入数据,使用printf()函数将数据输出到屏幕上。事实上,使用这些函数指定从哪里输入或输出到哪里去的方式没有什么特别。因为scanf()函数可以从任何地方接收信息,只要这些信息是字符流即可。同样,printf()函数也可以将数据输出到任何能接收字符流的地方去。这并不是巧合:C语言的标准输入输出函数都是独立于设备的,程序员不需要考虑如何在特定设备上传入传出数据。C语言的库函数和操作系统会确保在特定设备上的操作完全正常。C入门经典(第4版)10.2标准流C语言有3个在stdio.h头文件中预定义的标准流,程序只要包含了这个头文件,就可以使用这些流。这3个标准流分别是stdin、stdout和stderr。在一些系统中还可以使用另外两个流stdprn和stdaux,但它们不是C语言的标准流,所以编译器不支持它们。C入门经典(第4版)10.3计算机绘图系统的硬件组成前面介绍过,stdin上的键盘输入有两种形式:一种是格式化输入,主要由scanf()函数提供;另一种是非格式化输入,通过getchar()等函数接收原始的字符数据。这两种形式都很常见,下面详细介绍它们。格式化键盘输入输入格式控制字符串输入格式字符串中的字符输入浮点数的各种变化读取十六进制和八进制值用scanf()读取字符scanf()的陷阱从键盘上输入字符串键盘的非格式化输入C入门经典(第4版)10.3.1格式化键盘输入函数scanf()从stdin流中读入字符,并根据格式控制字符串中的格式指定符,将它们转换成一个或多个值。scanf()函数的原型如下:intscanf(char*format,...);格式控制字符串参数的类型是char*,即字符串指针。在函数调用时,它通常显示为显式的变元,如下:.scanf(%lf,&variable);C入门经典(第4版)10.3.2输入格式控制字符串在scanf()或wscanf()函数中使用的格式控制字符串不完全类似于printf()中的格式控制字符串。在格式控制字符串中添加一个或多个空白字符,如空格‘’、制表符‘\t’或换行符‘n’,scanf()会忽略空白字符,直接读入输入中的下一个非空白字符。在格式控制字符串中只要出现一个空白字符,就会造成无数个连续的空白字符被忽略。因此,可以在格式字符串内加入任意多个的空白字符,使输入易于理解。注意,scanf()默认忽略空白字符,但使用%c、%[]或%n指定符读取数据时除外。C入门经典(第4版)10.3.3输入格式字符串中的字符可以在输入格式字符串中包含一些不是格式转换指定符的字符。为此,必须指定输入中有这些字符,且scanf()函数应读取它们,但不存储它们。但这些非格式转换字符必须和输入流的字符完全相同,只要有一个不同,scanf()就会终止输入。C入门经典(第4版)10.3.4输入浮点数的各种变化使用scanf()函数读取格式化的浮点数时,不仅可以选择格式指定符,而且可以输入不同形式的数。C入门经典(第4版)10.3.5读取十六进制和八进制值前面曾经提过,可以使用格式指定符%x从输入流中读取十六进制值,使用格式指定符%o读取八进制值。C入门经典(第4版)10.3.6用scanf()读取字符第一个例子尝试过读入字符串,读入字符串还有其他方法。有3个格式指定符用于读取一个或多个单字节字符。使用格式指定符%c可以读取一个字符,并将它存储为char类型,如果使用的是%lc,就存储为wchar_t类型。对于字符串,可以使用指定符%s或%[],如果要将输入存储为宽字符,就使用%ls或%l[],其中转换指定符的前缀是L的小写。此时要给存储的字符串追加终止字符‘\0’,作为最后一个字符。使用格式符%[]或%l[]读入的字符串必须只包含方括号内的字符,如果方括号中的第一个字符是^时,则读入的字符串不能包含方括号内^字符后面的任何字符,例如%[aeiou]读入的字符串只能包含元音。碰到不是元音的字符就停止输入。而%[^aeiou]读入的字符串不能包含元音。碰到元音就停止输入。C入门经典(第4版)10.3.7scanf()的陷阱使用scanf()常犯的两个错误如下:变元必须是指针,最常犯的错误是将变量指定为scanf()的变元时,忘记在变量名的前面加上&符号,不过使用printf()时不需要这个&字符。此外,如果变元是数组名或指针变量,也不需要&符号。在读字符串时,要确保有足够的空间存放读入的字符串,这个字符串需包含终止字符'\0',否则,会覆盖内存中的数据,甚至是程序代码。C入门经典(第4版)10.3.8从键盘上输入字符串stdio.h头文件中的gets()函数可以将一整行的文本作为字符串读入。它的函数原型如下:char*gets(char*str);这个函数会将连续的字符读入指针str所指的内存中,直到按下回车键为止。它会用终止字符'\0'取代按下回车键时读入的换行符。其返回值与变元相同,即存储字符串的地址C入门经典(第4版)10.3.9键盘的非格式化输入getchar()函数可以从stdin中一次读一个字符,它在stdio.h中定义,语法如下:intgetchar(void);getchar()函数不需要变元,它会返回从输入流中读入的字符。注意,这个字符返回为int类型,并显示在屏幕上。C入门经典(第4版)10.4屏幕输出将数据输出到屏幕的命令行上要比从键盘上读取数据容易多了,因为我们知道要输出什么数据,而输入时可能输入错误的数据。将格式化数据输出到stdout流的主要函数是printf()。printf()函数可以提供许多不同的格式输出,其格式指定符远多于scanf()。使用printf()格式输出到屏幕转义序列整数输出输出浮点数字符输出C入门经典(第4版)10.4.1使用printf()格式输出到屏幕printf()函数在头文件stdio.h中定义,它的一般形式如下:intprintf(char*format,...);C入门经典(第4版)10.4.2转义序列在printf()和wprintf()函数的格式控制字符串中可以包含空白字符。空白字符有换行符、回车符、换页符、空格和制表符。它们用以\开头的转义序列表示。C入门经典(第4版)10.4.3整数输出下面介绍一些前面未提及的变化,其中字符宽度和精度指定符最有趣。C入门经典(第4版)10.4.4输出浮点数前面介绍了的输出整数的选项,接下来看看输出浮点数的选项。C入门经典(第4版)10.4.5字符输出学习了输出数值的各种选项后,接下来看看字符的输出。printf()和wprintf()函数可以使用4个输出指定符输出字符数据:单个字符和字符串使用%c和%s,单个宽字符和宽字符串使用%lc和%ls。前面介绍过%lc和%ls,下面用一个例子说明单个字符的输出。C入门经典(第4版)10.5其他输出函数除了printf()和wprintf()函数有输出字符串的功能外,在stdio.h头文件中声明的puts()函数也可以输出字符串。puts()函数与gets()函数互补。这个函数的名称来自于其用途:放置(put)字符串。puts()函数的一般形式如下:intputs(constchar*string);屏幕的非格式化输出数组的格式化输出数组的格式化输入C入门经典(第4版)10.5.1屏幕的非格式化输出函数putchar()也是包含在stdio.h头文件中,与函数getchar()互补。putchar()函数的一般形式如下:intputchar(intc);putchar()函数将单个字符c输出到stdout上,并返回所显示的字符。它可以输出信息,一次显示一个字符,这会使程序比较大,但能控制是否输出某些字符。C入门经典(第4版)10.5.2数组的格式化输出使用在stdio.h头文件中声明的sprintf()函数,可以将格式化数据写入char类型的数组中。这个函数的原型如下:intsprintf(char*str,constchar*format,...);这个函数根据第二个格式字符串参数输出第三个参数和后续参数指定的数据,其工作方式与printf()相同,只是将数据写入函数第一个参数指定的字符串中。它返回的整数是写入str的字符数,不包括终止字符。C入门经典(第4版)10.5.3数组的格式化输入sscanf()函数与sprintf()函数互补,因为sscanf()函数可以在格式字符串的控制下,从char类型的数组元素中读取数据。函数的原型如下:intsscanf(constchar*str,constchar*format,...);根据格式字符串format,数据从str读入第三个参数和后续参数指定的变量中。这个函数返回读取的数据项个数。如果读取和存储数据值之前出现了错误,就返回EOF。字符串用文件结束条件来表示其结束,所以如果在转换值之前到达了str字符串的末尾,就返回EOF。C入门经典(第4版)10.6小结本章选择介绍了前面讨论过的各种格式指定符,但还有许多未介绍的格式指定符。熟悉它们的唯一方式是实践,最好在真实环境下实践。理解各种编码并不等同于熟悉,要熟练运用它们,必须在实际的程序中多次使用它们。附录D提供了快速参考。
本文标题:C语言入门经典(第四版)10-基本输入和输出操作
链接地址:https://www.777doc.com/doc-3612122 .html