我正在尝试从命令行获取所有输入,并将其放入一个链表中。命令行中的数字格式为0-1 2-3 4-9 etcc这里是我在两个变量中存储一对数字的方法:
scanf("%d-%d", &a, &b);
现在,这个scanf语句在一个循环中,我的问题是:循环的条件是什么?我想继续执行scanf,直到所有的输入都完成。
提前谢谢。
发布于 2012-04-17 18:10:08
如果不是臭名昭著的话,scanf
的一个著名特征是,当读取非字符串数据(例如,int
)时,它会将数据留在输入缓冲区中。点击这里:Leave data in input buffer。
试试这个:
do
{
int x = scanf("%d-%d", &a, &b);
}while ((x != EOF) && (getchar() != '\n'));
您需要将scanf
输出与EOF进行比较。最重要的是,您需要清除scanf
在输入缓冲区中留下的'\n'
。
https://stackoverflow.com/questions/10189091
复制相似问题