0.前言
先推荐一本书,政治书籍《政治的人生》,算是一本日记题材。是现任,作者大家百度一下就知道了,这里不宜过多说明。从这本书里,可以看出来现在的社会——这本书是30年前的。大佬就是大佬,不愧是三代军师。想要的私聊,不方便分享。
切回正题。sprintf,官方解释就不说了,就是一个打印函数而已。但是,是super_printf()。我们知道printf()是打印到标准输出,这个sprintf可以输出到任何你想输出的地方(夸张一下)。
1.整形转换为字符型
直接看代码。
char a[10];
int num=123;
sprintf(a,"%d",num);
printf("%s",a);
sprintf(字符串地址,整形,整数);即把num按照%d的方式输出到字符串a中。
2.拼接字符串
char str1[10]="hello";
char str2[10]="world";
char str[20];
sprintf(str,"%s%s",str1,str2);
printf("%s",str);
结果:
helloworld
--------------------------------
Process exited after 0.1517 seconds with return value 0
请按任意键继续. . .
从这里就可以看出来,你可以任意添加你想要输进去的整数型或者字符串。比如
char str1[10]="hello";
char str2[10]="world";
char str[20];
sprintf(str,"%s%s+%d+%s",str1,str2,66,"good");
printf("%s",str);
结果:
helloworld+66+good
--------------------------------
Process exited after 0.0198 seconds with return value 0
请按任意键继续. . .
但是要注意大小。
printf能做的这个都可以做,左对齐右对齐什么的。
还可以直接输出你想要的进制。
char str[50];
sprintf(str,"%s+%x+%x","good",'A',15);
printf("%s",str);
结果:
good+41+f
--------------------------------
Process exited after 0.5701 seconds with return value 0
请按任意键继续. . .
这是输出十六进制,A的ASCII是65对应十六进制41,15对应十六进制f。
注意在这个sprintf是有返回值的,成功返回字符串长度。
char str[50];
int re;
re=sprintf(str,"%s+%x+%x","good",'A',15);
printf("%s\n",str);
printf("%d\n",re);
结果:
good+41+f
9
--------------------------------
Process exited after 0.0162 seconds with return value 0
请按任意键继续. . .
3.snprintf
这个是sprintf的扩展版。直接看代码。
char str1[10]="hello";
char str2[10]="world";
char str[10];
snprintf(str,4,str1);
printf("%s\n",str);
结果:
hell
--------------------------------
Process exited after 0.01755 seconds with return value 0
请按任意键继续. . .
很好理解,指定了字符数量。这样似乎也可以当做分割用。可以试一试。
注意:
- 会自动在格式化后的字符串尾添加\0。
- 返回值n,当调用失败时,n为负数,当调用成功时,n为格式化的字符串的总长度。
4.总结
上面说的还不够全面,希望大家多多指教。
祝大家周末愉快!
要自由啊,同学们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)