目录
4.3.1 使用函数getchar()和putchar()输入输出字符型数据
4.3.2 使用函数scanf()和printf()输入输出字符型数据
C语言通过函数实现数据的输入输出功能,并为此提供了多种多样的输入与输出函数,例如,由键盘输入数据函数、由显示器输出数据函数、磁盘文件读写函数、硬件端口数据读写函数等。本节介绍其中最基本的输入输出函数,即格式化输出函数printf()、格式化输入函数scanf()、字符输入函数getchar()以及字符输出函数putchar()【这四种输入输出函数均为标准库函数,对应头文件为stdio.h】
4.1 用printf()函数输出数据
使用printf()函数实现数据输出是C语言程序最基本的数据输出方式,也是C语言程序设计的最基础内容。
4.1.1 printf()函数的一般格式
printf()函数是C语言的格式化输出函数,用于向标准输出设备(通常为显示器)按规定格式输出信息,是程序中使用最多的标准函数之一。printf()函数的一般格式为:printf("格式控制字符串",表达式表)
4.1.2 说明
(1)“表达式表”是要输出的一系列表达式,当有多个表达式时,各表达式之间用“,”分隔。
(2)"格式控制字符串"用于描述所输出信息的格式,它包括两类内容:①以%开始的格式控制符,它规定要输出数据的类型及其格式;②普通字符或转义字符,普通字符按原样输出,转义字符输出的是其转义否后的结果。printf()函数的格式控制符及其功能见表1,printf()函数的转义字符及其功能见表2。
printf()函数被执行后,其输出结果的形式完全由“格式控制字符串”决定,计算机按照“格式控制字符串”中的控制序列由前到后形成输出结果。输出结果时,若遇非格式控制符,则将该字符输出;若遇格式控制符,则按顺序在“表达式表”中找到对应的表达式,并按照格式控制符规定的格式,将表达式的计算结果输出在该格式符所在的位置上。“格式控制字符串”中的格式控制符与“表达式表”的表达式按照位置一一对应, 即第一个格式控制符使用第一个表达式, 第二个格式控制符使用第二个表达式,以此类推。
格式控制符 | 功能 | 是否常用 |
---|---|---|
%d | 输出一个int型数据 | 是 |
%f | 输出一个float型数据 | 是 |
%c | 输出一个char型数据 | 是 |
%ld | 输出一个long int型数据 | 是 |
%s | 输出一个字符串 | 是 |
%u | 输出一个十进制无符号整数 | 否 |
%e | 输出一个指数形式的浮点数 | 否 |
%x或%X | 输出一个以十六进制表示的无符号整数 | 否 |
%O | 输出一个以八进制表示的无符号整数 | 否 |
%g | 自动选择%f或者%e格式中输出宽度较短的一种形式 | 否 |
字符形式 | 功能 | 是否常用 |
---|---|---|
\n | 换行,将当前位置移到下一行开头 | 是 |
\t | 水平跳格,跳到下一个Tab位置 | 一般 |
\b | 退格,将当前位置移到前一列 | 否 |
\r | 回车,将当前位置移到本行开头 | 否 |
\\ | 反斜杠字符“\” | 否 |
\' | 单引号字符' | 否 |
\" | 双引号字符" | 否 |
\ddd | 八进制数表示的对应ASCII码字符 | 一般 |
\xhh | 十六进制数表示的对应ASCII码字符 | 一般 |
(3)被输出的表达式的个数,必须与“格式控制字符串”中格式控制符的个数相同,且顺序要与格式串中要求输出的内容对应一致,否则会产生意想不到的错误。
(4)可以在格式控制字符“%”和其他符号之间插入数字,以限定输出项的域宽(指定输出项所占用的列数)。当输出数据的实际位数超过域宽定义时,按实际位数输出。使用%f格式符时,如果不限制小数位数,则输出数据的小数位数由系统的默认值设置确定。
%3d表示输出一个整数,域宽为3,当输出的整数不足3位时,按右对齐显示。
%05d表示输出一个整数,域宽为5,当输出的整数不足5位时,在高位用0补充。
%9.2f表示输出一个实数,域宽为9,保留2位小数,整体长度不足9位时,按右对齐显示。
%8s表示输出一个字符串,域宽为8,不足8位时,按右对齐显示。
4.2 用scanf()函数输入数据
4.2.1 scanf()函数的一般格式
scanf()函数是C语言的格式化输入函数,它要求从标准输入设备(键盘)为变量输入数据,也是程序中使用最多的标准函数之一。printf()函数的一般格式为:scanf("格式控制字符串",变量地址表)
4.2.2 说明
(1)"格式控制字符串"用于说明输入数据的类型和数据格式,所用的格式控制符与printf()函数相同。
(2)“变量地址表”是接收数据的变量地址,当有多个变量地址时,各变量地址之间用“,”分隔。当接收数据的变量是简单变量时,变量地址的表示形式:&简单变量名。其中,&是取变量地址运算符,当需要为变量输入数据时,必须使用它的地址形式。
(3)“格式控制字符串”中格式控制符的个数必须与变量的个数一致。
(4)“格式控制字符串”中的格式控制符,允许使用其他符号分隔,常使用的分隔符为逗号“,”分隔符。当无任何分隔符时,输入的各个数据之间可以使用空格符分隔,也可以使用回车符(按Enter键)分隔;当使用逗号分隔符时,输入的各个数据之间也必须使用逗号分隔。
4.3 输入输出字符型数据
4.3.1 使用函数getchar()和putchar()输入输出字符型数据
(1)用getchar()函数输入字符
getchar()函数的功能是从键盘输入的字符串中读入一个字符,其调用格式:getchar()
从键盘输入的字符存储在键盘输入缓冲区中,执行getchar()函数时,若该缓冲区有末读字符时,当前字符即是getchar()函数的值。当键盘缓冲区无可读字符时,getchar()函数请求输入数据,计算机进入等待状态,直到从键盘输入字符串并按Enter键后,getchar()函数读取输入字符串中的第一个字符为函数值。此时若再一次执行 getchar(), 则getchar()读取输入字符串中的第二个字符为函数值。
(2)用putchar()函数输出字符
putchar()函数的功能是向标准输出设备输出一个字符。其调用格式:putchar (ch)
ch为一个字符变量名或字符常量,putchar (ch)函数被执行后,即将ch的值输出。
4.3.2 使用函数scanf()和printf()输入输出字符型数据
使用格式化输入输出函数scanf()、printf()和格式控制符“%c”也可以实现字符型数据的输入输出。
char ch; //定义字符型变量ch
scanf("%c",&ch); //使用scanf()函数输入字符数据
printf("%c\n",ch); //使用printf()函数输出字符数据