doitcy777
V2EX  ›  问与答

关于 strcat 函数,求解

  •  
  •   doitcy777 · Feb 25, 2020 · 3161 views
    This topic created in 2449 days ago, the information mentioned may be changed or developed.
    小菜鸟遇到一个小问题,VS 运行结果如下
    求解。


    代码如下:
    #include <stdio.h>
    #include <string.h>
    #pragma warning(disable:4996)

    int main()
    {
    //关于 a 的定义,有 2 种:如下,

    //第一种方式定义:运行结果正常
    char a[100] = {0};
    //如果换第二种方式定义,运行结果错误,乱码,无法运行
    char a[100] ;


    char b[100] ="abcd";
    strcat(a,b);
    printf("\n%s\n", a);

    return 0;
    }
    13 replies  •  2020-04-26 16:33:27 +08:00
    wevsty
    wevsty
    Feb 25, 2020
    1
    char a[100] ;
    只定义没有初始化的话内部空间的内容是未知的,strcat 是向字符串末尾添加内容,判断字符串末尾是以 0 来判断的。
    这么说明白了么?
    drizztdou
    drizztdou
    Feb 26, 2020 via iPhone❤️1
    2
    @wevsty 纠正一下是以 \0 判断的。
    Crimilals
    Crimilals
    Feb 26, 2020 via iPhone
    3
    如果是 debug 版本,默认填充应该是 int3,也就是 0×CC
    elfive
    elfive
    Feb 26, 2020 via iPhone
    4
    @drizztdou 字符'\0'就是数值 0……
    WordTian
    WordTian
    Feb 26, 2020 via Android
    5
    @elfive \0 是 0x00,0 是对应 0x30,不一样的
    wevsty
    wevsty
    Feb 26, 2020❤️1
    6
    @drizztdou @WordTian
    一般表述上,不会把数字 0 认为是一个 ASCII 中的 0 字符,只有在字符串中来表示的时候才会使用\0 这样的写法。

    0 就是 0x00
    ‘0’才是 0x30
    drizztdou
    drizztdou
    Feb 26, 2020 via iPhone
    7
    @elfive 明白了你的想法. ‘\0’的 ascii 码是 0, 但一般来说 使用 ‘\0’ 来指字符串的结尾标志。因为
    当你说 0,有人会觉得是整型 0,有人觉得是字符 ‘0’, 容易造成混淆。
    elfive
    elfive
    Feb 26, 2020 via iPhone
    8
    @WordTian 你说的一个是字符'\0',另一个是字符'0',有单引号的。
    我说的一个是字符'\0',另一个是数值 0,这个数值不带单引号!
    elfive
    elfive
    Feb 26, 2020 via iPhone
    9
    @drizztdou 是的,所以你看我第一条回复里,字符才需要用"'"(单引号)包裹住,表示它不是数值,而数值就不需要。
    lunafreya
    lunafreya
    Feb 26, 2020 via iPhone
    10
    楼上一堆人是有多无聊
    doitcy777
    doitcy777
    OP
    Apr 26, 2020
    11
    感谢各位大神,我已经理解这个问题了。就是 wevsty 说的这个道理。谢谢
    wolegequ
    wolegequ
    Apr 26, 2020 via Android
    12
    楼主扔了一个问题,两个月后回来发现大神们帮忙解决了,于是又问了一个数据库的问题[狗头]
    doitcy777
    doitcy777
    OP
    Apr 26, 2020
    13
    @wolegequ 被你发现了。其实这个小问题我自己也弄明白了。数据库的问题比较棘手。手动狗头。。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4634 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 01:36 · PVG 09:36 · LAX 17:36 · JFK 20:36
    ♥ Do have faith in what you're doing.