标准I/O函数

74 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一、printf函数

printf函数通常被称为“格式化打印函数”,它的第一个参数称为“格式化字符串”,在“格式化字符串”中可以使用“占位符”把一些其它类型的数据镶嵌到文本字符串中进行打印输出。“占位符”都是以“%”开头的,当程序进行打印输出时,这些“占位符”就会被真正的数据所代替。

printf函数的占位符:

占位符表示内容
%c字符
%f浮点数
%s字符串
%x十六进制数
%d整数
%o八进制数
%u无符号整数
%%%字符

printf函数的修饰符:

修饰符意义
digit(数字)指定数据的输出宽度,以字符为单位。如果指定的宽度不够,以实际宽度为准
.digit(数字)指定数据的输出精度,对于浮点数是指有效小数位数,对于字符串是指输出字符个数,对于整数是指输出的最小位数(位数不够,高位补0)
-指定数据对齐方式为左对齐。默认数据输出是右对齐的方式
+对于有符号的数据,则显示出正、负号
#显示数据的前缀,对于八进制数显示前缀0,对于十六进制数显示前缀0x或0X

这些修饰符是搭配占位符来使用的,不能单独使用。

二、scanf函数

在使用scanf函数时要注意,需要在后面的参数变量名前加上一个&符号,表示取变量的内存地址

char ch; int n; float flt; scanf("%c%d%f",&ch,&n,&flt);

用户在输入时要注意,每个数据之间要留有空白字符(例如空格字符)。 scanf函数在读取字符型数据时,会将用户输入的第一个字符(包括空白字符)读取进来,并保存到字符变量中。所谓空白字符包括空格、水平制表符以及换行符等这些不可见的字符scanf函数在读取非字符型数据时,会自动跳过用户输入中的前导空白字符从第一个合法字符开始读取,直到遇到空白符或非法字符才停止读取,然后把这些字符转换成对应的数据保存到变量中。什么是合法字符呢?例如,如果读取的是一个十进制整数,合法字符就是指0到9这些数字字符;如果读取的是一个八进制数,合法字符就是指0到7这些数字字符;如果读取的是一个十六进制数,合法字符就是指0到9这些数字字符以及A到F、a到f这些字符;如果读取的是一个浮点数,那么合法字符除了包括0到9这些数字字符外,还包括一个表示小数点“.”的字符。 scanf函数的格式化字符串中尽量不要包含占位符之外的其它字符,因为用户必须严格按照格式化字符串的格式进行输入,否则很容易导致错误。