stdfmt.h#
stdfmt.h提供了格式化函数
- Author
Shihong Wang (jack4shihong@gmail.com)
- Version
0.2
- Date
2023-04-09
- Copyright
Copyright Shihong Wang (c) 2023 with GNU Public License V3.0
Functions
-
const char *_scan_number(const char *str, int *num)#
_scan_number用于将存储在str中的字符串数字转换为int数字并存入num中Note
_scan_number将在第一个非字符数字前停下, 即:若
str = "123TEST", 则运行后num = 123, *return = ‘T若str = “12EST456”, 则运行后num = 12, *return = ‘E’若str = “ST456”, 则运行后num = 0, *return = ‘S’`
- Parameters:
str – 字符串形式的数字
num – 转换后的数字将存入
num中
- Returns:
const char* str第一个非字符数字
-
char *copy_number(char *str, unsigned long num, int base, int width, int precision, int flag)#
copy_number用于将整形的数字num按照指定进制base转换为字符串数字, 而后按照指定的宽度width和精度precision复制到str中去- Parameters:
str – 输出字符数组
num – 整形数字
base – 进制
width – 对齐宽度
precision – 输出位数
flag – 格式控制字符
- Returns:
char* 复制后str的位置
-
size_t vsprintf(char *str, const char *format, va_list ap)#
vsprintf按照format中指定的格式将ap指向的可变参数列表的值复制到str中关于各个字段的说明:
flag字段:-: 左对齐输出, 默认是右对齐+: 输出正数前添加加号, 默认不添加#: 当type为b,o,x,X时, 添加前缀0b,0或者0x0: 使用0填充对齐, 默认使用空格填充对齐
width字段:数字: 设置对齐的宽度, 例如:printf("%5d", 100)将会输出100*:动态参数, 由后续的数字指定, 例如:printf("%*d", 5, 10)等价于 printf(“%5d”, 10)-precision字段: -.数字: 设置输出的位数, 例如:printf(“%.2d”, 111)将会输出11-.*: 动态参数, 由后续的数字指定, 例如:printf(“%.*d”, 2, 111)等价于 printf("%.2d", 111)
length字段:h: 输出一个16位宽度的整数, 即:short,unsigned short,int16_t,uint16_tl: 输出一个64位宽度的整数, 即:long,unsigned long,int64_t,uint64_tll: 输出一个64位宽度的整数, 即:long long,unsigned long longPS: RISC-V LP64中long long和long都是64位
type字段:%: 输出一个%p: 输出一个指针, 需要转换为(void*)c: 输出一个字符s: 输出一个\0结尾的字符串b: 以二进制输出一个整数, 无符号o: 以八进制输出一个整数, 无符号i: 以十进制输出一个整数, 有符号d: 以十进制输出一个整数, 有符号u: 以十进制输出一个整数, 无符号x: 以十六进制输出一个整数, 小写字母, 无符号X: 以十六进制输出一个整数, 大写字母, 无符号n: 到此处已经输出的字符的数量, 不会输出文本, 而是将值保存到地址中. 参考: https://blog.csdn.net/zsx0728/article/details/118100389
Note
格式控制字符:
%[flag][width][precision][length]<type>. 其中:type字段必须存在, 其余字段均可选
- Parameters:
str – 接受输出的字符数组
format – 含格式控制字符的字符串.
ap – 可变参数列表
- Returns:
size_t 处理后的字符串(str)的长度
-
size_t sprintf(char *buf, const char *format, ...)#
sprintf将格式字符串format的格式控制字符替换为可变参数并输出到buf中关于各个字段的说明:
flag字段:-: 左对齐输出, 默认是右对齐+: 输出正数前添加加号, 默认不添加#: 当type为b,o,x,X时, 添加前缀0b,0或者0x0: 使用0填充对齐, 默认使用空格填充对齐
width字段:数字: 设置对齐的宽度, 例如:printf("%5d", 100)将会输出100*:动态参数, 由后续的数字指定, 例如:printf("%*d", 5, 10)等价于 printf(“%5d”, 10)-precision字段: -.数字: 设置输出的位数, 例如:printf(“%.2d”, 111)将会输出11-.*: 动态参数, 由后续的数字指定, 例如:printf(“%.*d”, 2, 111)等价于 printf("%.2d", 111)
length字段:h: 输出一个16位宽度的整数, 即:short,unsigned short,int16_t,uint16_tl: 输出一个64位宽度的整数, 即:long,unsigned long,int64_t,uint64_tll: 输出一个64位宽度的整数, 即:long long,unsigned long longPS: RISC-V LP64中long long和long都是64位
type字段:%: 输出一个%p: 输出一个指针, 需要转换为(void*)c: 输出一个字符s: 输出一个\0结尾的字符串b: 以二进制输出一个整数, 无符号o: 以八进制输出一个整数, 无符号i: 以十进制输出一个整数, 有符号d: 以十进制输出一个整数, 有符号u: 以十进制输出一个整数, 无符号x: 以十六进制输出一个整数, 小写字母, 无符号X: 以十六进制输出一个整数, 大写字母, 无符号n: 到此处已经输出的字符的数量, 不会输出文本, 而是将值保存到地址中. 参考: https://blog.csdn.net/zsx0728/article/details/118100389
Note
格式控制字符:
%[flag][width][precision][length]<type>. 其中:type字段必须存在, 其余字段均可选
- Parameters:
buf – 接受输出的字符数组
format – 含格式控制字符的格式字符串
... – 可变参数列表
- Returns:
size_t 输出到buf字符数组中的字符个数