這樣為什么錯了
#include<stdio.h>
#include<string.h>
int main()
{
?? ?char s1[100]="";
?? ?char s2[]="為了";
?? ?char s3[]="部落";
?? ?strcat(s2,s3);
?? ?strcpy(s1,s2);
?? ?printf("%s\n",s1);
?? ?return 0;
}
把s3帶入到s2,s2再覆蓋在s1里這樣為什么會出錯?
??? strcpy(s1,s2);
?? ?strcat(s1,s3);
2016-04-01
樓上的回答真好,初始的兩個字節(jié)放不下4個字,所以不行.??? strcat(s1,s2);??? strcat(s1,s3);這樣不用stcopy也行,只是不符標準答案.
2016-03-24
在該程序中,由于s2字符數(shù)組的定義時并未指定長度,所以,系統(tǒng)根據(jù)初始化的情況給分配了4個字節(jié)(2個漢字);若?? ?strcat(s2,s3);則s2數(shù)組根本放不下8個字節(jié)(4個漢字:為了部落);而是s1數(shù)組定義時,指定了數(shù)組長度為100,所以,必須? strcpy(s1,s2);? ? strcat(s1,s3);