strcat

来源:6-8 字符串函数

JASON0000

2015-06-08 15:02

第4个例子 strcat "hello "后面有一个空格  那么拼接后的"hello world"长度不是超过10了 ?

写回答 关注

3回答

  • Perona
    2015-06-08 16:08:31
    已采纳

    可能是教材弄混了吧,用strlen()计算出来的长度确实是11。代码给你,你运行看看。

    #include <stdio.h>
    
    #include <string.h>
    
    int main()
    
    {
    
        char s1[10]="hello ";
    
        char s2[]="world";
    
        strcat(s1,s2);
    
        printf("%s\n",s1);
    
        printf("%d\n",strlen(s1));
    
        return 0;    
    
    }

     

    JASON0...

    非常感谢!

    2015-06-08 16:31:30

    共 1 条回复 >

  • JASON0000
    2015-06-08 16:50:20

    “strcat在使用时s1与s2指的内存空间不能重叠,且s1要有足够的空间来容纳要复制的字符串”,实际发现s1空间不足也可以运行成功,其实已经内存越界了,如果在VC中运行调试即可看到报错,这里的编译器可能对越界访问做了特殊处理。

  • Perona
    2015-06-08 15:13:19

    s1[10]这个数组是长度是11,下标是从0开始的。不要搞混了。

    空格也算一个字符。

    原来的s1也有空格啊。

    char s1[10]="hello ";

    跟s2拼接长度刚好是11啊。

    菠萝不困

    长度是10,但是有11个元素

    2015-11-08 15:37:14

    共 3 条回复 >

C语言入门

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

926025 学习 · 20793 问题

查看课程

相似问题