printf()和scanf()
函数能让用户可以与程序交流,它们是输入输出函数,简称IO函数。
转换说明:
转换符号 | 输出 |
---|---|
%a、%A | 浮点数、十六进制数和p计数法(c99/c11) |
%c | 单个字符 |
%d | 有符号十进制 |
%e、%E | 浮点数、e、E计数法 |
%f | 浮点数、十进制计数法 |
%g、%G | |
%i | 有符号八进制(用%d) |
%o | 无符号八进制 |
%p | 指针 |
%s | 字符串 |
%u | 无符号十进制 |
%x、%X | 无符号十六进制 |
%% | 一个百分号 |
printf()
中的标记:
标记 | 含义 |
---|---|
- |
待打印项左对齐,从字段左侧开始打印,示例%-20s ,不加- 默认为右对齐 |
+ |
有符号值若为正,则在值前显示+号,否则显示-号,示例%+6.2F |
空格 | 有符号值若为正,则在前面显示前导空格(不显示任何字符),若为负,则在之前面显示-号,示例% 6.2F |
# |
把结果转换为另一种形式 |
除printf()
和scanf()
函数外,还有:
getchar() & putchar()
函数,用于获取和输出单个字符。gets() & puts()
函数,用于获取和输出字符串。
用户在进行输入时,大部分系统在用户按下Enter键之前不会重复打印用户输入的字符,这种输入形式属于缓冲输入。 用户利用键盘输入时,输入的字符会依次被送到缓冲区中,在此处等待的输入函数只有在用户输入了回车时,才会去缓冲区中取字符。
缓冲分为:完全缓冲和行缓冲
- 无论系统使用何种方式检测文件结尾,
getchar()
函数读取到文件结尾时返回stdio.h
中的EOF
- 一般系统使用
Ctrl+D
或者Ctrl+Z
作为文件传输结尾信号
scanf()
和%s
转换说明读取字符串内容,scanf()
获取的是一个单词,它的行为是以第一个非空白字符为字符串的开始,
如果使用%s
作为转换说明,则以下一个空白字符(空行、空格、制表符、换行符)作为字符串的结束。
如果指定了将要读取字段的长度,比如%10s
(长度为10的字符串),那么scanf()
将在读到10个字符或读到第一个空白字符停止。
scanf()
函数返回成功读取的项数,如果没有读取任何项,且需要读取一个数字而用户输入的是非数字字符串,scanf()
返回0,
当scanf()
读取到文件结尾时,会返回stdio.h
中的EOF
特殊值,
关于输入输出可以参考输入输出