Scanf输入转移到下一个scanf

时间:2016-10-03 20:50:50

标签: c input scanf

我在这里有一个代码,在输入带空格的字符串时有一些不需要的行为。例如position = profile.positions.build(position_params) 。当有多个单词的输入进来时,我希望它只注册第一个单词。

目前发生的事情是:

print illegal_argument

它在命令循环中为比较注册了第一个christian@oblig2 $ print 0 Enter router ID for information > ID: 0, flag: f7, model_length: 13, model: D-Link y6000 。但是,而不是print提示用户输入下一个输入,而是忽略该输入,并取用用户从先前scanf输入的第二个字/数字。

我想要发生的是:

scanf

一切都按预期工作,但我想知道是否有更简单的方法来做到这一点。我尝试过使用Strtok,没有太多运气。

christian@oblig2 $ print 0
Enter router ID for information > 0
ID: 0, flag: f7, model_length: 13, model: D-link y6000.

以上代码是我从用户那里获得的输入。

有人有任何想法吗?

1 个答案:

答案 0 :(得分:2)

scanf()获取第一个输入值后,它将其余部分保留在输入流中。试试这个以丢弃剩余的字符:

int ch;
while ((ch = getchar()) != '\n' && ch != EOF)
    continue;             // discard remaining characters

如果您在stdin的下一次阅读之前放置这些行,则额外的字符不会损坏您的输入。