我正在尝试从命令行获取所有输入并将其放入链接列表中。命令行中的数字采用这种格式 0-1 2-3 4-9 etcc 这是我在两个变量中存储一对数字的方法:
scanf("%d-%d", &a, &b);
现在,这个 scanf 语句在一个循环中,我的问题是:循环的条件是什么?我想继续做 scanf 直到所有输入完成。
提前致谢。
我正在尝试从命令行获取所有输入并将其放入链接列表中。命令行中的数字采用这种格式 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 进行比较。最重要的是,您需要在输入缓冲区中清除'\n'
左侧。scanf