首页 > 解决方案 > 当字符串被 C 中的空字符截断时会发生什么?

问题描述

例如,我有char s[] = "abcdef"最后一个空字符。现在,如果我这样做s[3] = '\0'了,那么我的字符串 's' 就会变成"abc",因为数组的索引 3 中有空字符。我的问题是,字符串的其余"def"部分会发生什么?它去哪儿了?它是否仍然是字符数组的一部分,s但是当我们将其表示为字符串时,它会切断到找到空字符的位置?

谢谢!

标签: c

解决方案


当然,'d'被 覆盖了'\0'

他们"ef"仍然在阵列中,他们没有去任何地方。对字符串进行操作的函数将忽略它们,因为它们将在s[3]达到 null at 时停止处理。但是,如果您执行类似printf("%c", s[4])或的操作,则可以看到它们printf("%s", s+4)


推荐阅读