【发布时间】:2016-02-23 07:15:46
【问题描述】:
我正在努力解决 C 从键盘输入数据中看似微不足道的问题,但我是 C 菜鸟(不过有一些 Java 背景)
我需要什么:我需要从键盘输入一个 int 值(然后按 Enter),然后我需要用户只按 Enter 而不输入任何内容,然后输入另一个 int(再按一次 Enter)。
我能做什么:
int a = 0;
int b = 0;
scanf("%d", &a);
skip_line_cool_function();
scanf("%d", &b);
printf("You have just entered: &d and &d", a, b);
如你所见,我不知道如何跳线。
我尝试过的方法:scanf 输入了一个虚拟 C 字符串,但是,如您所知,当您什么都不输入时,它会耐心等待至少有什么东西出现输入。
我在 Google 上搜索的内容:我怀疑 fgets 可以完成这项工作,但老实说,我不明白如何在我的案例中使用它。
【问题讨论】:
-
如果你想控制线路,不要使用
scanf();使用fgets()和sscanf()。如果您使用scanf(),它将允许用户在数字前输入任意数量的空格,包括换行符。你可以把你的函数写成void skip_line_cool_function(int n) { int c; int i = 0; while ((c = getchar()) != EOF && i < n) { if (c == '\n') i++; } }。您可以将其称为skip_line_cool_function(2);以跳过两个换行符——第一个数字之后的一个,以及空白行的一个。 UI 听起来不是很悦耳;强迫人们输入空行有点问题。 -
非常感谢 :) 其实那不是 UI,我不想讲太多细节,这是一个 UVa Online Judge 问题输入要求(准确地说是 793)。我在 Java 中做到了这一点,看起来或多或少很简单,现在我正在努力提高我的 C/C++ 技能,因为我以后会需要它们。
标签: c