2012-04-17 37 views
1

我想从命令行获取所有输入并将其放入链表中。 命令行的数字是这种格式0-1 2-3 4-9 ETCC 这里是我做的存储一对数字的两个变量:继续为命令行中的所有输入执行scanf。 C程序

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

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

在此先感谢。

+1

你能定义“直到所有输入完成”吗?如果你回答这个问题,你会得到你的循环条件 – 2012-04-17 10:17:57

回答

3

scanf即使不是臭名昭着的特性,也会在读取非字符串数据(例如,int)时将数据保留在输入缓冲区中。退房时间:Leave data in input buffer

试试这个:

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

你需要比较EOF scanf输出。最重要的是,您需要在输入缓冲区中清除scanf左边的'\n'

+0

这个EOF是如何到达的?如果我每行输入一对数字并在我想停止任何事情时不停地点击换行符。 – Tudor 2012-04-17 10:12:27

+1

@Tudor'Ctrl-D'? – 2012-04-17 10:21:31

+0

@Tudor,请再次与此。 – 2012-04-17 10:28:03