这样哪里有问题吗

来源:6-8 字符串函数

小学沫

2015-01-29 12:23

#include <stdio.h>

#include <string.h>

int main()

{

    char s1[100]="";

    char s2[]="我爱,";

    char s3[]="慕课网";

    /*在以下补全代码*/

 

  strcat(s2,s3);             /*s3接到s2后面*/

    strcpy(s1,s2);           /* 把s2复制到s1    */

    printf("%s\n",s1);

    return 0;    

}


写回答 关注

4回答

  • 为爱逞能
    2015-02-08 18:36:01

    最短长度==s1的长度+s2的长度-1.

  • 为爱逞能
    2015-02-08 18:33:21

    s2的长度至少要有12字节才能完整的连接两个字符串,然而默认的长度仅为4字节,运行岂能不出错?

  • onemoo
    2015-01-29 23:50:16

    不要这样写,这不是什么性能问题。虽然可以编译通过,但这种写法根本就是个bug!有严重的隐患,可能会引起程序崩溃。

    因为strcat要求第一个参数要有足够的长度来容纳拼接后的字符串,而你的s2是一个长度只有4的字符数组,这样就造成了数组后面的内容被覆盖,将引起不确定的结果!

    strcat这样的函数是error-prone(易出错)的,一定要小心使用。


    如果还不明白,我在这里有详细的解答: http://www.imooc.com/qadetail/64628

  • 偌颜宁
    2015-01-29 18:40:51

    这样写,理论上是可行的,但是这在C语言中,很影响性能的,你可以在本地尝试一下

C语言入门

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

926212 学习 · 20797 问题

查看课程

相似问题