qq_犎_0
2016-03-22 13:59
#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);
楼上的回答真好,初始的两个字节放不下4个字,所以不行. strcat(s1,s2); strcat(s1,s3);这样不用stcopy也行,只是不符标准答案.
在该程序中,由于s2字符数组的定义时并未指定长度,所以,系统根据初始化的情况给分配了4个字节(2个汉字);若 strcat(s2,s3);则s2数组根本放不下8个字节(4个汉字:为了部落);而是s1数组定义时,指定了数组长度为100,所以,必须 strcpy(s1,s2); strcat(s1,s3);
C语言入门
928479 学习 · 21551 问题
相似问题