【发布时间】:2020-03-21 07:42:12
【问题描述】:
有人可以帮我理解为什么如果第一个输入是“K”,那么 scanf 不会要求我提交第二个输入?
int n=0;
scanf("%d",&n);
scanf("%d",&n);
就好像它从其他地方获得了输入!在这种情况下,n 的值是多少?
【问题讨论】:
-
在调用函数时总是检查返回值。
scanf将在无法解析输入时立即停止。返回值告诉您有多少项目scanf成功匹配。不匹配的输入留在流中,与不匹配的说明符关联的变量不会改变。 -
这就是为什么
scanf()返回一个告诉你它是否成功的值。这也是为什么使用scanf()读取输入是一个非常糟糕的主意的原因 - 如果输入不是预期的,您的输入流将处于不确定状态。 -
请有人帮我理解为什么... 因为
scanf是一个设计非常非常糟糕,几乎没用的函数。我鼓励所有 C 程序员要么根本不使用它,要么在最初几周将它用于非常简单的东西,然后毕业到更好的东西。在你使用它的最初几周内,只给它完美的输入;当输入不匹配时,甚至不要试图弄清楚它做了什么(更不用说让它表现得更优雅了)。 -
@SteveSummit,你能说明哪些功能更好地使用而不是
scanf()。