snprintf拼接字符串
例如编辑一个txt文档,不断将字符输入,最终形成一个长句子。可以看成是字符串的不断拼接。snprintf函数具有这个功能。
#include<stdio.h> void main(void) { char str[20]={0}; snprintf(str, 4,"abc"); snprintf(str+3, 4, "def"); //从数组str的第3个位置开始继续复制4个字符 printf("str:%s\n",str); }
运行结果:
1 str:abcdef
这里定义了一个20个字节长度的数组,第一次填充情况,注意最后的\0也占一个字节。第二次填充时应该把\0覆盖,str+3。不然printf时遇到\0就停止打印。
a | b | c | \0 | ||||||||||||||||
通常在拼接字符串的时候,并不知道前面填充了多少位。这时需要用strlen函数计算出来。
#include<stdio.h> #include<string.h> void main(void) { char str[20]={0}; snprintf(str, 4,"abc"); snprintf(str+ strlen(str), 4, "def"); printf("str:%s\n",str); }
利用sprintf函数在字符串前插入字符
char str1[40]; char str2[40]; if(strlen(str1)%2) { sprintf(str2,"%c", '0'); sprintf(str2+1,"%s", str1); }else{ sprintf(str2,"%s", str1); }
如果str1的字符串长度为奇数就在字符串前加"0"然后复制给str2。