为了账号安全,请及时绑定邮箱和手机立即绑定

这样为什么错了

#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 回答

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926217    人
  • 解答问题       20797    个

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

进入课程

这样为什么错了

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信