问答详情
源自:6-8 字符串函数

这样为什么错了

#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里这样为什么会出错?


只能s2覆盖s1再把s3带入到s1

    strcpy(s1,s2);
    strcat(s1,s3);

提问者:qq_犎_0 2016-03-22 13:59

个回答

  • 精慕门4127614
    2016-04-01 15:19:02

    楼上的回答真好,初始的两个字节放不下4个字,所以不行.    strcat(s1,s2);    strcat(s1,s3);这样不用stcopy也行,只是不符标准答案.

  • 立云
    2016-03-24 00:14:45

    在该程序中,由于s2字符数组的定义时并未指定长度,所以,系统根据初始化的情况给分配了4个字节(2个汉字);若    strcat(s2,s3);则s2数组根本放不下8个字节(4个汉字:为了部落);而是s1数组定义时,指定了数组长度为100,所以,必须  strcpy(s1,s2);    strcat(s1,s3);