这样为什么错了

来源:6-8 字符串函数

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


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

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

写回答 关注

2回答

  • 精慕门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);

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

928479 学习 · 21551 问题

查看课程

相似问题