【发布时间】:2013-02-23 20:26:15
【问题描述】:
我正在尝试使用 scanf 函数读取未知数量的输入。
int a[100];
int i = 0;
while((scanf("%d", &a[i])) != '\n')
i++;
// Next part of the code
但是这个函数并没有进入下一部分代码,似乎有一个无限的while循环。
如何解决这个逻辑错误? scanf 是否有其他替代方法,例如 sscanf 将整数读入数组?
【问题讨论】:
-
你想如何标记输入的结束?
-
假设用户开始输入一个数字列表,比如 10 空格 20 空格 30 并且在他们完成输入后他们应该按下回车键退出循环
-
scanf 的返回值是成功匹配并分配的输入项数,可以小于提供的值,如果早期匹配失败,甚至可以为零。所以与
\\n的比较是不正确的。 -
因为
getchar从标准输入返回下一个字符,而不是scanf -
n = scanf("%d%d ... %d", a+0, a+1, ..., a+99); printf("%d numbers\n", n);
标签: c while-loop scanf