gpt4 book ai didi

C 字符串初始值设定项不包括终止符?

转载 作者:太空狗 更新时间:2023-10-29 17:26:45 26 4
gpt4 key购买 nike

我对以下 C 代码片段感到有些困惑:

printf("Peter string is %d bytes\n", sizeof("Peter")); // Peter string is 6 bytes

这告诉我,当 C 编译带双引号的字符串时,它会自动为空终止符添加一个额外的字节。

printf("Hello '%s'\n", "Peter");

printf 函数知道何时停止读取字符串“Peter”,因为它到达了空终止符,所以...

char myString[2][9] = {"123456789", "123456789" };
printf("myString: %s\n", myString[0]);

在这里,printf 打印所有 18 个字符,因为没有空终止符(如果不去掉 9,它们将无法容纳)。 C 不在变量定义中添加空终止符吗?

最佳答案

您的字符串是 [2][9]。那些 [9] 是 ['1', '2', etc... '8', '9']。因为您在第一个数组维度中只给了它 9 个字符的空间,并且因为您使用了所有 9 个字符,所以它没有空间放置 '\0' 字符。重新定义您的字符数组:

char string[2][10] = {"123456789", "123456789"};

它应该可以工作。

关于C 字符串初始值设定项不包括终止符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/471703/

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