gpt4 book ai didi

c - 第一次体验结构。为什么会出现这种输出?

转载 作者:太空狗 更新时间:2023-10-29 15:52:29 25 4
gpt4 key购买 nike

这是我第一次使用结构,我不明白为什么会出现这种输出,有人可以向我解释一下并告诉我做错了什么吗?

struct letters {
const char BIG[26];
const char SMALL[26];
};
struct letters abc = { .BIG = "ABCDEFGHIJKLMNOPQRSTUVWXYZ", .SMALL = "abcdefghijklmnopqrstuvwxyz" };
printf("%s", abc.BIG);

输出是:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

很明显,我想要的是大字母用 BIG,小字母用 SMALL。我尝试打印 abc.SMALL,它被正确填充。

为什么 abc.BIG 中同时填充了小写字母和大写字母?

最佳答案

BIGSMALL 正好有 26 个字母的空间。但是 printf 期望 char * 结尾有一个 '\0',这意味着该字符串需要 27 个字符的空间。由于没有用于 terminating-null 的空间,编译器不会在 BIGSMALL 中放置一个(即使字符串常量确实有一个)。

因此 printf 不知道字符串 BIG 在哪里结束并最终打印 SMALL

更改 BIGSMALL[27] 个字符留出空间:

struct letters{
const char BIG[27];
const char SMALL[27];
};

关于c - 第一次体验结构。为什么会出现这种输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19667091/

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