sprintf的使用
字符串格式化命令,调用头文件:<stdio.h>
参数1:格式化后字符串缓存
参数2:格式化格式
参数3:传入参数
… :根据参数2里的参数类型个数
举例
sprintf(tab, "Rxpkg Cnt:%02d", (int)rxCount);
输出结果:
Rxpkg Cnt:01
说明:
%02d
表示传入参数的类型,
0
表示高位补0,只能填0,若不填,则为空。
2
表示至少转换成2位数,比如1的转换结果为01(需要补0),10的转换结果为10,如果该位置为3
则1的转换结果为001(需要补0)不需要补0为 1(1前面有2个空格),以此类推。
d
表示转成十进制数,若为x
表示转换成小写十六进制数,若为X
表示转换成大写十六进制数,若为c
表示转换成ascll对应的字符
注意:若传参类型为数值时,传入变量的长度小于
int
需要强制转换为int
类型,不然转换结果会被强制左移8位。
举例:unsigned char test=0x55; char tab[20]={0}; sprintf(tab, "test result:%x/r/n", test); //结果为:tab = "test result:5500"
atoi的使用
将字符串中的数字字符转换成整型数
原型:int atoi(const char *nptr)
使用:从nptr
中的第一个字符开始转换,碰到非数字字符结 束,若第一个字符为非数字字符,返回值为0.
注意:转换的结果超过int
的长度,会出错
举例:
printf("Hello, World! :%d\n",atoi("12333a"));
//打印结果:Hello, World! :12333\n
printf("Hello, World! :%d\n",atoi("a12333a"));
//打印结果:Hello, World! :0\n
sscanf的使用
根据规定的格式从字符串中提取字符串
原型:int sscanf(const char *buffer, const char *format, [ argument ] ... );
使用:根据format
的格式从buffer
提取字符,放到format
的后面的参数中。从第一个字符开始检测判断,碰到不服务格式中的要求的结束检测,检测到有符合格式要求的返回1,否则返回0.
注意:format
可以是正则表达式
举例:
char str[12];
printf("Hello, World!:%d \n",sscanf("aaAA123as", "%[a-z]", str));
//打印结果:Hello, World!:1
printf("Hello, World!:%s \n",str);
//打印结果:Hello, World!:aa