我对以下 C 代码片段有点困惑:
printf("Peter string is %d bytes\n", sizeof("Peter")); // Peter string is 6 bytes
这告诉我,当 C 编译双引号中的字符串时,它会自动为空终止符添加一个额外的字节。
printf("Hello '%s'\n", "Peter");
The printf
函数知道何时停止读取字符串“Peter”,因为它到达了空终止符,所以......
char myString[2][9] = {"123456789", "123456789" };
printf("myString: %s\n", myString[0]);
Here, printf
打印所有 18 个字符,因为没有空终止符(如果不去掉 9,它们就无法容纳)。C 不在变量定义中添加 null 终止符吗?
你的字符串是[2][9]。这些 [9] 是 ['1'、'2' 等...'8'、'9']。因为您在第一个数组维度中只给了它 9 个字符的空间,并且因为您使用了全部 9 个字符,所以它没有空间放置 '\0' 字符。重新定义你的 char 数组:
char string[2][10] = {"123456789", "123456789"};
它应该有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)