例如編輯一個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。