【发布时间】:2020-03-11 17:51:58
【问题描述】:
我需要使用“scanf”函数确定输入的大小(可能是无限的)。 现在我有限制,所以我不能使用字符串、数组或基本上任何不是函数的东西。
char input;
int counter = 0;
while (scanf(" %c",&input) == 1) counter++;
我面临的问题是循环是无限的, 我认为我的最终条件可能是错误的。我已经尝试了所有这些。
while (scanf(" %c",&input) > 0)
while (scanf(" %c",&input) != -1)
while (scanf(" %c",&input) != EOF)
我也尝试过“do-while”。
感谢帮助。
【问题讨论】:
-
scanf返回匹配的 inout 说明符的数量,所以我将使用条件== 1。此外,在这种情况下,我将不在%c之前使用前导空格。 (不过,我不确定这些更改是否能解释您的问题。) -
你怎么知道循环是无限的?你让它永远运行吗?
-
@SteveSummit “现在我有限制,所以我不能使用字符串、数组或基本上不是函数的任何东西”让我想到了学校作业
-
你是如何输入的?你如何表示输入结束?
-
@Nix 在 Unix 和类 Unix 系统下,是的,这是基本的(而且几乎是唯一的)方法。如果你真的很想这样做,你可以编写代码让它超时并在(比如说)一分钟不活动后退出,但这很难做到,而且几乎肯定不是你的导师所期望的。
标签: c while-loop scanf do-while