sprintf使用例子:
1、BCD转换成字符
char src = 0x3A;
char tmp[6];
memset(tmp, 0x00, sizeof(tmp));
sprintf(tmp, "%02X", src);
说明:
1)打印出tmp为3A
2)%02X含义:
02:0表示长度不足用0填充,2表示格式化后总长度是2
X:表示以大写16进制形式输出
2、字符串数值相加
char * p = "000000000100";
char * p2 = "000000000099";
char * p3 = "000000876666";
double d = 0.0;
d = atof(p); //atof字符串转double
d += atof(p2);
d += atof(p3);
char temp[16];
memset(temp, 0x00, sizeof(temp));
sprintf(temp, "%016.0lf", d);
说明:
1)打印出temp为0000000000876865
2)%016.0lf含义:
016:0表示长度不足用0来填充,16表示格式化后的总长度是16
.0lf:.0表示小数点后长度是0,整数部分=总长度-小数点后长度。lf是long float型,与double同义
3、int转字符串
int i = 11;
char buf[6];
memset(buf, 0x00, sizeof(buf));
sprintf(buf, "%04d", i);
说明:
1)打印出buf为:0011
2)%04d说明:
04:0表示长度不足用0填充,4表示格式化后总长度是4
d:表示以整数形式输出
4、字符串不足位数前补0
sprintf(pde3901.value +9, "%0*d%s", 11-strlen(INST_CODE_JCB), 0, INST_CODE_JCB); //不足11位前补0
说明:
1)%0*d%s:
0*:*表示自定义参数,即第一个参数,11-strlen(INST_CODE_JCB)要补位的长度,但是如果原本就是字符串不会补0,只会补空格
d:表示以整数形式输出第二个参数,即后面的0
%s:表示以字符串形式输出INST_CODE_JCB
5、文件写入16进制数
fprintf写入文件遇到0x00就结束了,后面都用空格代替。写入16进制要用fwrite函数
fwrite(file_header.sBitMap, 16, 1, fp);
6、%s中的小数点
sprintf(sMsg, "SQLCODE = [%d], MSG = [%.*s]", sqlca.sqlcode, sqlca.sqlerrm.sqlerrml, sqlca.sqlerrm.sqlerrmc);
说明:
1)%.*s:
点的作用:%m.ns中m表示整个字符串的总长度,长度不足补空格,n表示从相应的字符串中最多取用的字符数
星号的作用:这里用*代替了%m.ns中的n,表示动态的精度设置。对应的变量是sqlca.sqlerrm.sqlerrml
|