开门见山,直入主题
sprintf函数原型
int sprintf( char *buffer, const char *format [, argument] ... );
1、格式化数字字符串
将一个整数转化至字符串数组中,见下例
1.1
sprintf(str,"%d",1234);
printf("十进制 %s\r\n", str); //“1234”
1.2
//使用空格补齐
sprintf(str,"%2d",1234); //指定宽度,不足的使用空格补
printf("十进制 %s\r\n", str); //“ 1234”
//左边补0 的等宽格式
sprintf(str,"%02d",1234); //
printf("十进制 %s\r\n", str); //“001234”
1.3
sprintf(str,"%-2d",1234); //指定宽度,左对齐
printf("十进制 %s\r\n", str); //“1234 ”
1.4
”%m.nf”格式含义:m代表指定宽度,n代表小数点取得位数
2、连接字符串
char* who = "I";
char* whom = "优快云";
sprintf(s, "%s love %s.", who, whom); //产生:"I love 优快云. "
char a1[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
char a2[] = {'H', 'I', 'J', 'K', 'L', 'M', 'N'};
sprintf(s, "%.7s%.7s", a1, a2); //产生:"ABCDEFGHIJKLMN"
3、打印地址信息
有时调试程序时,我们可能想查看某些变量或者成员的地址,由于地址或者指针也不过是个32 位的数,你完全可以使用打印无符号整数的”%u”把他们打印出来:
sprintf(s, "%u", &i);
不过通常人们还是喜欢使用16 进制而不是10 进制来显示一个地址:
sprintf(s, "%08X", &i);
然而,这些都是间接的方法,对于地址打印,sprintf 提供了专门的”%p”:
sprintf(s, "%p", &i);
我觉得它实际上就相当于:
sprintf(s, "%0*x", 2 * sizeof(void *), &i);
4、sprintf 的返回值