例子如下:
#include<stdio.h>
#include<string.h> /*strcat標頭檔案*/
int main()
{
char s1[]="1,2,3,4,5",s2[]="qwer";
gets(s1);
puts("s1="); #會自動換行
puts(s1);
strcat(s1,s2);
printf("s1的記憶體大小:%d\n",sizeof(s1));
printf("%s\n",s1);
return 0;
}
執行結果: 輸入ABC
ABC
s1=
ABC
s1的記憶體大小:10
ABCqwer
gets會將結束標誌回車自動轉換為\0,所以原有字串其實記憶體大小(sizeof檢視一下)是不變的,只是接下來strcat連線時以第一個引數字串的\0為起點連線的。
可見s1記憶體大小是10位元組,即1,2,3,4,5\0
gets(s1)之後(假設輸入的是ABC回車)s1其實變成了ABC\03,4,5\0
連線時是從ABC後的\0開始連線的,所以就成了ABCqwer