【发布时间】:2017-06-09 14:42:44
【问题描述】:
由于某些字符串末尾缺少字符“\0”,我的代码崩溃了。
我很清楚为什么我们必须使用这个终止字符。我的问题是, 向字符数组添加潜在的第二个空字符是否有问题 - 以解决字符串问题?
我认为在每个字符串中添加一个 '\0' 比验证它是否需要然后添加它更便宜,但我不知道这是否是一件好事。
【问题讨论】:
-
拥有
'\0'不是问题,除非您没有超出该字符数组的范围。您必须明白,拥有两次'\0'意味着,任何字符串操作甚至都不知道还有第二个'\0'。他们会一直读到第一个'\0',然后就可以了。 -
'\0'(或 NUL)字符终止一个字符串。因此,根据定义,NUL 字符之后的任何内容都不是字符串的一部分。 -
最好正确解决问题并找出您的某些字符串未正确终止的原因。双 nuls 不会造成太大的伤害,但会让人头疼。
-
你的建议是不好的做法。只需首先使用 NUL 终止符句点正确构造字符串。
-
如何验证字符串末尾是否有
\0?没有办法做到这一点。
标签: c c-strings null-terminated nul