c - 当字符串被 C 中的空字符截断时会发生什么?
问题描述
例如,我有char s[] = "abcdef"
最后一个空字符。现在,如果我这样做s[3] = '\0'
了,那么我的字符串 's' 就会变成"abc"
,因为数组的索引 3 中有空字符。我的问题是,字符串的其余"def"
部分会发生什么?它去哪儿了?它是否仍然是字符数组的一部分,s
但是当我们将其表示为字符串时,它会切断到找到空字符的位置?
谢谢!
解决方案
当然,'d'
被 覆盖了'\0'
。
他们"ef"
仍然在阵列中,他们没有去任何地方。对字符串进行操作的函数将忽略它们,因为它们将在s[3]
达到 null at 时停止处理。但是,如果您执行类似printf("%c", s[4])
或的操作,则可以看到它们printf("%s", s+4)
。
推荐阅读
- c# - 为 BindingGroup 设置 IsDirty
- java - 仅在调用 System.out.println 时才评估嵌套的 while 循环
- javascript - 如何计算当前值加上进入数组的下一项?
- dart - Dart如何获取列表中的最大重复元素
- php - Lotusscript:在 PHP 中将文件从电子邮件发送到网站的问题
- php - 如何在 Woocommerce 的 PHP 操作中包含多个产品 ID
- bash - for循环期望交互和脚本之间的结果不同
- javascript - 如何隐藏“类型”元素
- r - 使用 ggplot 重现绘图
- xcode - 为什么我的 NSSplitViewItem 在折叠完成之前隐藏它的子视图