求解,为什么字符串变量s1不能被赋值?

来源:6-8 字符串函数

shadow_006

2019-02-15 22:52

https://img4.mukewang.com/5c66d1ec0001c7e319201080.jpg不太理解为什么。

写回答 关注

1回答

  • Howard229
    2019-02-16 10:10:23

    你的代码存在两个漏洞:

    首先,c语言中字符串不能用等号赋值,需要用strcpy;

    其次,strcat需要第一个参数有足够的空间,不然会导致内存溢出(s2的空间正好只能放下“我爱,”加一个‘\n’字符,具体占几个字节视编译器的编码而定,反正是没有多余的空间的)。

    正确代码(不唯一):

    #include<stdio.h>
    #include<string.h>
    
    int main(){
        char s1[100]="";
        char s2[]="我爱,";
        char s3[]="慕课网";
        strcat(s1, s2);
        strcat(s1, s3);
        printf("%s\n",s1);
        return 0;
    }


C语言入门

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

926210 学习 · 20797 问题

查看课程

相似问题