【问题标题】:Why is the following C code asking input twice?为什么以下 C 代码要求输入两次?
【发布时间】:2017-09-10 15:52:09
【问题描述】:
#include<stdio.h>

int main()
{
  int i, j;
  for(scanf("%d ",&i); i<=10; i++)
    printf("%d ",i);
  return 0;
}

我是编程世界的初学者,所以请帮助我理解为什么在编译上述 C 代码时它会要求输入两次。也许这里有一些逻辑要循环,我可能会遗漏。请帮助我理解。在此先感谢。:)

【问题讨论】:

  • scanf("%d ",&amp;i); --> scanf("%d", &amp;i);
  • 那么空间是怎么回事?为什么它会再次提示我输入?请给出理由
  • 我在代码中看不到它要求任何东西
  • 也许阅读手册页
  • 它不要求任何东西。它只是等待输入。除此之外,熟悉手册页是一件好事

标签: c loops for-loop input scanf


【解决方案1】:

改变这个:

scanf("%d ",&i);

到这里:

scanf("%d",&i);

阅读更多What does space in scanf mean?

【讨论】:

  • 谢谢..这是一个非常常见的错误...现在我知道发生了什么...非常感谢先生... :)
  • @user7841468 更好:根本不要使用 scanf。总是一次输入一行(posix getline,或者自己实现它作为围绕fgets的循环),然后然后解析它(可能使用sscanf
【解决方案2】:

目前,您将 scanf() 置于 for 循环中,它要求输入 10 次。当您从 for 循环中删除 scanf() 时,不会发生这种情况。

【讨论】:

  • scanf()for 循环的初始化部分。它只会运行一次。
【解决方案3】:

我遇到了同样的问题,我所做的唯一更改是将“%d”更改为“%d”。这样就解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-04
    • 2013-10-24
    • 2019-08-26
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    相关资源
    最近更新 更多