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

这样哪里有问题吗

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

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

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

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

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

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

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

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


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

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

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

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

举报

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

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

进入课程

这样哪里有问题吗

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