gpt4 book ai didi

c - 为什么这个C scanf会自动跳过呢?

转载 作者:行者123 更新时间:2023-11-30 18:17:23 25 4
gpt4 key购买 nike

我面临有关 scanf 的问题当我运行这个时:

char c;
int a, b;

scanf("%d", &a);
scanf("%c", &c);
scanf("%d", &b);

然后前两个scanf工作正常,但第三个完全跳过。我在这个论坛上搜索了有关此问题的不同帖子并找到了很多信息,但想了解其他信息。

我已经发现最简单的解决方案是:

scanf("%d %c %d", &a, &c, &b);

另一个解决方案可以使用:

getchar();

而且我还发现我的问题背后的原因是它写了一个额外的换行符 \n到缓冲区,这就是跳过第三个的原因。但为了进一步研究,我发现当我使用另一个 scanf 时的char在第二个 scanf 之后输入然后就可以了。这意味着,就我而言,如果我输入任何 integer ,就会出现问题在 char 之后输入类型。我再次看到许多其他人遇到相反情况的问题,他们无法接受 char 的输入之后integer 。现在我想澄清一下 C 中 scanf 支持的确切方案。那就是我会遇到类似问题的时候以及为什么char char后即可扫描但是integer不能。感谢大家。

最佳答案

"%d" 格式说明符包括跳过前导空格。 "%c" 格式没有这个功能,它会读取输入缓冲区中的下一个字符,无论它是什么类型的字符。

如果您想使用 "%c" 格式跳过前导空格,则需要使用格式字符串中的空格明确告诉 scanf 执行此操作,例如“%c”

关于c - 为什么这个C scanf会自动跳过呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37835909/

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