gpt4 book ai didi

C - 字符串数组,是否分配 '\0'?

转载 作者:太空宇宙 更新时间:2023-11-04 01:03:00 25 4
gpt4 key购买 nike

例如我们有一个字符串数组,大小为i

我们将该字符串作为输入并发现其大小,我们将其放入 while 中,当看到 EOF 或 '\0' 时,循环结束。

现在是分配时间。大小是 i,所以这意味着我们做 stringarray[i]='\0'

在分配时,分配大小为 i 或 i+1 或 i-1? 因为我尝试了所有这些并且它们有效。

最后一行,'\0'要分配吗?

最佳答案

有些地方你错了

  1. EOF 不用作字符串分隔符或字符串结束标记,仅使用 '\0'

  2. 当您为 size 个字符的字符串分配 sizesize - 1 字节,然后将内容复制到您将访问您的程序无权访问的分配 block ,从而导致未定义的行为,如果它“有效”,那只是巧合。但事实是,它并不真正有效。未定义的行为是未定义的,有时会发生一些不好的事情,而有时您甚至不会注意到它。

    必须size + 1 字节分配空间。

  3. 是的,确实应该分配容纳 '\0' 的空间。

关于C - 字符串数组,是否分配 '\0'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31220603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com