C语言本身并不提供输入输出语句,输入输出操作是由C函数库(stdio,标准输入输出函数)中的函数来实现的,因为将语句翻译成二进制的的指令是在编译阶段完成的,如果在其中有输入输出语句,可能会在编译阶段处理和硬件有关的问题,会使得编译系统复杂化。
在此介绍几种常用的输入输出函数:
一 getchar() / putchar(),一次操作一个字符。
1.getchar():
int getchar(void)
功能:从键盘获取一个字符。
参数:void,空,不需要参数。
返回值:成功 -> 返回读到字符的ASCII码值;失败 -> EOF(-1)。
2.putchar():
int putchar(int c)
功能: 输出一个字符
参数:要输出的字符(字符的ASCII码值)
返回值: 成功 -> 返回输出了的字符的ASCII码值;失败 -> EOF 。
二 scanf() / printf(),格式化的输入输出函数
1.printf():格式化输出函数
int printf(const char *format, ...)
int printf("格式化字符串",输出的参数列表)
(1)格式化字符串:普通字符原样输出。
格式化字符(占位符),按照指定的格式,替换为后面对应的参数值。
(2)占位符
整型: %d --- 转换为有符号十进制 形式
%u --- 转换为无符号十进制 形式
%x --- 转换为十六进制形式
%X --- 十六进制中的字母转换为大写形式
%o --- 转换为八进制形式
浮点:%f --- 转换为小数形式输出默认保留6位小数
%e --- 转换为科学计数法形式
%E --- 输出结果中的e输出为大写
%g --- 转换为更简洁的一种方式输出,不会输出多余的0
字符:%c --- 转换为字符形式输出
%s --- 转换为字符串形式输出
(3)辅助控制符:%[辅助控制符]d
# :%#x //将 0x 输出(十六进制)
%#o //将 0 输出 (八进制)
m:指定输出宽度,m是一个整数
如果数据本身宽度 < m 此时输出数据,默认右对齐,前面默认补空格,也可以补0。
如果数据本身宽度 >= m 此时输出实际长度数据。
m为负数时,左对齐
.n 小数输出 :%.nf
字符串输出:%s 表示保留前n个字符
%ld:输出长整型
%lld:输出更长的整型
%Lf :专门输出 long double
2.scanf():格式化输入函数
int scanf(const char *format, ...)
int scanf("格式化字符串", 地址列表)
scanf与printf函数比较类似,此处说明几点需要注意的点:
注意:(1)scanf输入多个数据时,默认以空白符作为分隔符。空白符(空格,回车,tab)
(2)scanf最后不要出现 '\n'等空白符,如果scanf中出现空白符表示匹配任意多个空白符。
(3)scanf读取数据过程及读取结束的条件:
读取过程:键盘输入的数据(都是字符数据) -> 输入到内存(缓冲区) -> CPU读取
结束条件:空白符,遇到非法字符,达到指定宽度。
处理缓冲区的垃圾数据(残留数据)有如下方法:使用getchar(),加入空白符进行跳过,%*c(表示跳过一个匹配项或读走一个匹配项。)