在程序中要使用输入输出函数(printf 和 scanf),就必须要包含 stdio.h 头文件。

一、格式转换符

整型

控制符 说明
%d 或 i% 有符号十进制整型(int、short、char)
%hd 短整型
%ld 长整型
%lld 或 %l64d 64 位整型
%u 无符号十进制整型(unsigned)
%o 无符号八进制整型
%x 或 %X 无符号十六进制整型,x 小写对应的十六进制为小写,X 大写对应大写

实型

G/E 格式表示的指数形式中 E 大写

控制符 说明
%f 十进制单精度浮点数(float),默认小数部分超过 6 位的四舍五入
%lf 小数形式双精度实型
%e 或 %E 指数形式单精度实型,le 同理
%g 或 %G 系统自动选定 f 或 e 格式,使输出的宽度最小,且不输出无意义的 0

字符型

控制符 说明
%c 一个字符
%s 字符串

其他

控制符 说明
%md m 为指定的输出字段的宽度。如果数据的位数小于 m,则左端补以空格,若大于 m,则按实际位数输出
%.mf 输出实数时小数点后保留 m 位,注意 m 前面有个点
%p 指针
%% 输出 %

另外可以在格式转换字符和 % 之间插入一些辅助的格式控制字符

width 和 precision 必须是无符号整数

二、printf

格式控制字符的个数要与实际输出的个数相等,多出的格式控制符会随机输出

printf("%d\t%d", 100); // 100 1378561

输出时表达式的计算是从右往左

int i = 1; printf("%d, %d, %d\n", i, i + 1, i = 3); // 3, 4, 3

格式转换符所表示类型和表达式的实际数据类型不同时,printf 函数不会对数据类型自动转换

有符号整数

复制代码

# [] 表示可以省略 格式:%[-][+][0][width][.precision][l][h]d

-:左对齐,默认右对齐 +:正数前加 “+” 0:右对齐,实际宽度 < width,左补零 width:最小宽度,实际宽度超过 width,则按照实际宽度输出 .precision:至少输出位数。若实际的位数 > .precision,按实际输出,否者左边补零 l:输出长整型(long) h:输出短整型(short)

复制代码

无符号整数

复制代码

# [] 表示可以省略

| 表示互斥

-:左对齐,默认右对齐 #:以八进制(%o)输出时,在数字前输出 0,以十六进制(%x 或 %X)输出时,在数字前输出 0x 或 0X 0:右对齐,实际宽度 < width,左补零 width:最小宽度,实际宽度超过 width,则按照实际宽度输出 .precision:至少输出位数(VC 下不包含 0x 或 0X 所占位数)。若实际的位数 > .precision,按实际输出,否者左边补零 l:输出长整型(long) h:输出短整型(short)

复制代码

实数

复制代码

# [] 表示可以省略

| 表示互斥

+:正数前加 “+” #:必须输出小数点 0:右对齐,实际宽度 < width,左补零 width:最小宽度,实际宽度超过 width,则按照实际宽度输出 .precision:规定输出实数时,小数部分的位数(四舍五入) l:输出 double 型(默认也是输出 double 型) L:输出 long double 型

复制代码

字符和字符串

复制代码

# [] 表示可以省略 字符格式:%[-][0][width]c 字符串格式:%[-][0][width][.precision]s

-:左对齐,默认右对齐 0:右对齐,实际宽度 < width,左补零 width:最小宽度,实际宽度超过 width,则按照实际宽度输出 .precision:只输出字符串前 precision 个字符

复制代码

三、scanf

复制代码

&:取地址运算符,只能作用于变量,不能作用于表达式

\[\] 表示可以省略

| 表示互斥

*:抑制符,输入的数据不会赋值给相应的变量 width:指定输入数据的域宽,遇空格或不可转义的字符则结束 l:用于 d、u、o、x|X 前,指定输入为 long 型整数,用于 e|E、f 前,指定输入为 double 型实数 h:用于 d、u、o、x|X 前,指定输入为 short 型整数 Type:各种格式转换符

复制代码

指定域宽时,输入的多余部分会被舍弃

一个数据输入结束:空格、回车、Tab、域宽结束、非法输入(%d,输入 12a3,则值为 12)

非法输入会影响后面输入,导致数据输入失败(d%,d%,输入12a34,b 的值无法预测,正确应输入 12,34)

使用 %c 录入字符数据时,空格和转义字符均作为有效字符被输入

四、字符数据的非格式化输入输出

输入

输出

int fflush(FILE *stream)

更新缓冲区,强迫将缓冲区内的数据写回参数 stream 指定的文件中,如果参数 stream 为 NULL,则将所有打开的文件数据更新

参数流为 stdin 时,刷新缓冲区,把缓冲区里面的内容丢掉

参数流为 stdout 时,刷新缓冲区,把缓冲里面的内容输出到设备


https://zh.wikipedia.org/wiki/Stdio.h

https://fishc.com.cn/thread-66471-1-1.html

本文转自 https://www.cnblogs.com/jhxxb/p/13209824.html,如有侵权,请联系删除。