gpt4 book ai didi

c - C 中扫描集的意外输出

转载 作者:太空宇宙 更新时间:2023-11-04 07:08:23 25 4
gpt4 key购买 nike

正如预期的那样。在遇到 4 之前应该接受一个数字,但它给出了一些垃圾值。为什么?

int main(void)
{

int a;
printf("Enter a number: ");
scanf("%[^4]d", &a);

printf("You entered: %d\n", a);

return 0;

}

最佳答案

据我所知,扫描集旨在与字符​​串一起使用(这使得 d 不能充当整数占位符规范)。一种写法是将输入读入一个字符串,然后解析它:

int main(void)
{
int a;
char b[255];
printf("Enter a number: ");
scanf("%254[^4]", &b);

a = atoi(b);
printf("You entered: %d\n", a);

return 0;
}

我将修改后的代码保持在最低限度,您肯定需要一些额外的输入完整性检查。

澄清一下:254 前缀限制了 scanf 将捕获的数据量,以便不超过缓冲区的大小(字符串以额外的结尾空字符,因此读取长度必须小于实际大小) 1 .

关于c - C 中扫描集的意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30388243/

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