1

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

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

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

提前致谢。

4

1 回答 1

3

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

试试这个:

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

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

于 2012-04-17T10:10:07.870 回答