继续对命令行中的所有输入执行scanf。C程序

继续对命令行中的所有输入执行scanf。C程序,c,command-line,input,scanf,C,Command Line,Input,Scanf,我试图从命令行获取所有输入,并将其放入一个链表中。 命令行中的数字的格式为0-1 2-3 4-9 etcc 以下是我将一对数字存储在两个变量中所做的操作: scanf("%d-%d", &a, &b); 现在,这个scanf语句在一个循环中,我的问题是:循环的条件是什么? 我想继续做scanf,直到所有的输入都完成 提前感谢。scanf的一个著名(如果不是臭名昭著的话)特征是,它在读取非字符串数据(例如,int)时会将数据留在输入缓冲区中。在这里签出: 试试这个: do {

我试图从命令行获取所有输入,并将其放入一个链表中。 命令行中的数字的格式为0-1 2-3 4-9 etcc 以下是我将一对数字存储在两个变量中所做的操作:

scanf("%d-%d", &a, &b);
现在,这个scanf语句在一个循环中,我的问题是:循环的条件是什么? 我想继续做scanf,直到所有的输入都完成


提前感谢。

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

试试这个:

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

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

如何达到此EOF?如果我每行输入一对数字,并在我想阻止任何事情发生的时候不停地换行。@都铎,请再说一遍。谢谢埃里克,这就是我要做的。正如您所说,getchar是最重要的部分,没有它,用户需要手动输入EOF)再次感谢!你能定义“直到所有输入完成”吗?如果你回答这个问题,你会得到你的循环条件