gpt4 book ai didi

c - 为什么 char 是唯一可以用 scanf 读入数组形式的类型?

转载 作者:太空宇宙 更新时间:2023-11-04 02:50:27 24 4
gpt4 key购买 nike

为什么你可以通过用简单的填充数组来读取一串字符:

char test[100];
scanf("%s", test);

虽然你不能得到相同的行为,比如 int:

int test2[100];
scanf("%d", test2);

为什么会这样?为什么决定使用后者你不会得到一个数组,每个数字都在不同的单元格中?

最佳答案

%s 格式是特殊的,因为在 C 中将字符串表示为放置在连续内存地址的以 null 结尾的字符序列的特定方式。这种表示恰好与字符数组的表示一致,但 %s 格式说明符背后的主要驱动力是 C 字符串,而不是字符数组。

请注意,当您使用 scanf 函数将字符串读入固定大小的 char 数组时,您应该告诉该函数您分配了多少内存以避免缓冲区溢出:

char test[100];
scanf("%99s", test);
// ^^
// Minus one for the null terminator

关于c - 为什么 char 是唯一可以用 scanf 读入数组形式的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22720323/

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