字符串和格式化输入输出
且任容枯 Lv4

字符串和格式化输入输出

字符串简介

c语言没有专门用于存储字符串的变量类型,字符串都被存储在char类型的数组中。

c语言用数组末尾的字符\0来标记字符串的结束

1
2
'X'  // X
"X" // X \0

常量和C预处理器

1
#define NAME value

const 用于限定一个变量为只读

明示常量

limits.h float.h

1
2
#define INT_MAX +32767
#define INT_MIN -32768
limits.h
明示常量 含义
CHAR_BIT char类型的位数
CHAR_MAX char类型的最大值
CHAR_MIN char类型的最小值
SCHAR_MAX signed char类型的最大值
SCHAR_MIN signed char类型的最小值
UCHAR_MAX unsigned char类型的最大值
SHRT_MAX short类型的最大值
SHRT_MIN short类型的最小值
USHRT_MAX unsigned short类型的最大值
INT_MAX int类型的最大值
INT_MIN int类型的最小值
UINT_MAX usigned int类型的最大值
LONG_MAX long 类型的最大值
LONG_MIN long 类型的最小值
ULONG_MAX usigned long类型的最大值
LLONG_MAX long long 类型的最大值
LLONG_MIN long long 类型的最小值
ULLONG_MAX usigned long long类型的最大值
float.h
明示常量 含义
FLT_MANT_DIG float类型的尾数位数
FLT_DIG float类型的最少有效字符 十进制
FLT_MIN_10_EXP 带全部有效数字的float类型的最小负指数 10为底
FLT_MAX_10_EXP float类型的最大正指数 10为底
FLT_MIN 保留全部精度的float类型的最小正数
FLT_MAX float类型的最大正数
FLT_EPSILON 1.00和比1.00大的最小float类型之间的差值

FLT可以替换成 DBL 和LDBL 来表示double 和long double

printf() 和scanf()

printf
转换说明 输出ntf
%a 浮点数、十六进制数和p记数法
%A 浮点数、十六进制数和p记数法
%c 单个字符
%d 有符号 十进制 整数
%e 浮点数 e记数法
%E 浮点数 e记数法
%f 浮点数
%g 根据值的不同,自动选择%f或%e格式用于指数小于-4或者大于或等于精度时
%G 根据值的不同,自动选择%f或%e格式用于指数小于-4或者大于或等于精度时
%i 同%d
%o 无符号 八进制 整数
%p 指针
%s 字符串
%u 无符号 十进制 整数
%x 无符号十六进制整数 使用0fprint
%X 无符号十六进制整数 使用0F
%% %
修饰符 含义
标记 - + 空格 # 0 例:”%-10d”
数字 最小字段宽度 如果该字段不能容纳待打印的数字或字符串,系统会使用更宽的字段 “%4d”
.数字 精度.对于%e,%E和%f转换,是将要在小数点的右边打印的数字的位数。对于%g和%G转换,是有效数字的最大位数。对于%s转换,是将要打印的字符的最大数目。对于整数转换,是将要打印的数字的最小位数。如果必要,要使用前导0来达到位数。只使用”.”表示其后跟随一个0,所以%.f和%.0f相同示例: “%5.2f”表示打印一个浮点数,它的字段宽度为5个字符,小数点后有两个数字
h 和整数转换说明符一起使用,表示一个short int或unsigned short int类型数值示例: “%hu”, “%hx”, “%6.4hd”
hh 和证书转换说明符一起使用,表示一个signed char或unsigned char类型数值
j 和整数转换说明符一起使用,表示一个intmax_t或uintmax_t值示例: “%jd”,”%8jx”
l 和整数转换说明符一起使用,表示一个long int或unsigned long int类型值
ll 和整数转换说明符一起使用,表示一个long long int或unsigned long long int类型值(C99)示例: “%lld”,”%8llu”
L 和浮点数转换说明符一起使用,表示一个long double值 示例: “%Lf”, “%10.4Le”
t 和整数转换说明符一起使用,表示一个ptrdiff_t值(与两个指针之间的差相对应的类型)(C99) 示例: “%td”, “%1ti”
z 和整数转换说明符一起使用,表示一个size_t值(sizeof返回的类型)(C99) 示例: “%zd”,”%12zx”