C的gets和strcat的使用

2020-10-04 07:00:19

例子如下:

#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