【问题标题】:keep doing scanf for all input in command line. C program继续扫描命令行中的所有输入。 C程序
【发布时间】:2012-04-28 15:59:32
【问题描述】:

我正在尝试从命令行获取所有输入并将其放入链接列表中。 命令行中的数字采用这种格式 0-1 2-3 4-9 etcc 这是我在两个变量中存储一对数字的方法:

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

现在,这个 scanf 语句在一个循环中,我的问题是:循环的条件是什么? 我想继续scanf,直到所有输入完成。

提前致谢。

【问题讨论】:

  • 你能定义“直到所有输入完成”吗?如果你回答这个问题,你会得到你的循环条件

标签: c command-line input scanf


【解决方案1】:

scanf 的一个著名的,如果不是臭名昭著的特征是,它会在读取非字符串数据时将数据留在输入缓冲区中(例如,int)。在这里查看:Leave data in input buffer

试试这个:

do
{
  int x = scanf("%d-%d", &a, &b);
}while ((x != EOF) && (getchar() != '\n'));

您需要将scanf 输出与EOF 进行比较。最重要的是,您需要清除输入缓冲区中scanf 留下的'\n'

【讨论】:

  • 这个EOF是如何到达的?如果我每行输入一对数字,并在我想停止时不断输入换行符,则不会发生任何事情。
  • @Tudor,请再说一遍。
  • 谢谢埃里克,这就是我想要做的。就像你说的那样,getchar 是最重要的部分,没有它,用户需要手动输入 EOF)再次感谢!
猜你喜欢
  • 2012-09-18
  • 2013-10-22
  • 2013-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-09
  • 1970-01-01
  • 2019-10-01
相关资源
最近更新 更多