标准I/O函数
一、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
函数的格式化字符串中尽量不要包含占位符之外的其它字符,因为用户必须严格按照格式化字符串的格式进行输入,否则很容易导致错误。