【发布时间】:2016-06-15 12:46:31
【问题描述】:
我在 C 中遇到了关于 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 时,它就可以工作了。这意味着,在我的情况下,如果我在char 类型之后输入任何integer 类型,就会出现问题。我再次看到许多其他人遇到相反情况的问题,他们无法在integer 之后输入char。现在我想澄清一下 C 中支持 scanf 的确切方案,那是我将面临类似问题的时候,以及为什么 char 可以在 char 之后扫描但 integer 不能。谢谢大家。
【问题讨论】:
-
我不认为你说的那样有问题.....其他人遇到的另一个问题是实际问题。
-
scanf 永远不会被跳过。要找出你的 scanf 的结果是什么,请检查它的返回值。
-
要获得有关特定代码的帮助,请发布MCVE 并准确说明您输入的内容。
标签: c