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

关于字符串函数


#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;    

}

这是我的代码  我的输出结果没问题  但这样对吗 那个拼接的可以这么写吗 他说s2要有足够的内存 这样会不会不够

正在回答

3 回答

strcpy(s1,s2);

    strcat(s1,s3);


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

废寝忘食陈同学 提问者

一定得这样吗 这个是答案的
2019-08-03 回复 有任何疑惑可以回复我~
#2

小小疾飞 回复 废寝忘食陈同学 提问者

strcat(s1,s3);这个函数是把s3拼到s1上。如果s1不够长就会出错。strcpy(s1,s2);是把s2复制到s1上 s1上的字符串就会被覆盖掉。s2 s3长度不够所以要strcpy(s1,s2);这样一下等于把s2长度搞够再连接。懂了没,陈同学?
2019-08-03 回复 有任何疑惑可以回复我~
#3

废寝忘食陈同学 提问者 回复 小小疾飞

不是,周老师我知道那样可以,就是我想问的是例如char s1[]="abc" 这个字符串数组没写长度是不是和之前的数组一样长度是由元素个数决定还是是无限或很大的
2019-08-03 回复 有任何疑惑可以回复我~
#4

小小疾飞 回复 废寝忘食陈同学 提问者

长度没注明,就默认是字符串长度。长度不可能无限的。
2019-08-03 回复 有任何疑惑可以回复我~
查看1条回复

不可以的 你的strcat(S2,S3);实际就是不能完成的 因为S2的内存空间已定短于S3 理论上是放不下S2+S3的   而输出正确的原因是你恰好把 S2+S3又STRCPY了S1(去掉这一步会出错)  S1有足够的空间  至于CAT那一步为什么还是把数据存下来了  我认为和内存的分配有关

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

可以的,不写长度好像是无限(应该有限2333)

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

废寝忘食陈同学 提问者

那是可以还是不可以哈哈哈哈
2019-08-03 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

关于字符串函数

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