printf-scanf#

格式化指示符#

说明符

数据类型

描述

%d

int

输出有符号的十进制整数

%o

unsigned int

输出无符号八进制整数(没有前导 0

%u

unsigned int

输出无符号十进制整数

%x/%X

unsigned int

输出无符号十六进制整数(没有前导 0x 或者 0X

%zu

size_t

输出无符号十进制数值

%zx

size_t

输出十六进制数值

%zd

ssize_t

输出有符号十进制数值

%f/%lf

double

输出十进制表示的浮点数,默认精度为 6

%e/%E

double

输出科学计数法表示的数,默认浮点数精度为 6

%g

double

根据数值不同自动选择 %f 或 %e

%G

double

根据数值不同自动选择 %f 或 %E

%c

char

把输入的数字按照 ASCII 码相应转换为对应的字符

%s

char *

输出字符串中的字符直至遇到字符串中的空字符 \0

%p

void *

以 16 进制形式输出指针

%%

%

输出字符 %(百分号)本身

%n

int *

到此字符之前为止,一共输出的字符个数,不输出文本

printf 格式控制#

说明符

描述

%15s

占宽 15,右对齐(不考虑末尾的 \0

%15.6s

占宽 15,显示前 6 字符,右对齐

%-15.6s

占宽 15,显示前 6 字符,左对齐

%15.0s

占宽 15,显示前 0 字符,右对齐

%.3s

显示前 3 个字符(没有占宽,默认左对齐)

%10f

占宽 10,浮点数默认保留 6 位小数,右对齐

scanf 格式控制#

说明符

描述

%d %d %d

以空格作为分隔符,读取字符串中的前 3 个整数

%d,%d,%d

以逗号作为分隔符,读取字符串中的前 3 个整数

%[^\n]

读取直到换行符(\n)的所有字符(scanf 默认以空格作为结束符)