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

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

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

提问者:shadow_006 2019-02-15 22:52

个回答

  • 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;
    }