为什么这个简单的c scanf代码导致无限循环?

时间:2016-10-26 22:39:55

标签: c compilation infinite-loop

关于堆栈溢出的第一个问题,让我们看看这有多好!

我无法理解为什么这段简单的c代码会导致无限循环。

#include <stdio.h>
#include <stdlib.h>

int main (void) {
  float num=0;
  printf("%f", num);
  scanf("%f", &num);
  printf("%f", num);
}

我检查了其他问题,但他们询问为什么输入非法输入类型导致无限循环。

我的代码在执行时导致无限循环,这意味着它在进入任何内容之前进入循环。

我这样编译:

gcc -o readSum readSum.c

终端输出:

vim readSum.c
15jz4@hera:~$ gcc -o readSum readSum.c
15jz4@hera:~$ ./readSum
0.000000

按任意键后没有任何反应 -Ctrl + Z退出状态,但可能还有其他一些键可以阻止它。 - 要重新安装,直到那时......我不能c + p。

修改

哇......反应非常快。

真的,伙伴们,“整个代码”的内容是什么?为什么我不提出我的整个代码?这是我的整个代码。或者我应该告诉你我在顶部有#include吗?

我创建它只是为了测试scanf。

这正是关键点,由于某种原因,执行后它只是进入一个无限循环,完全没有逻辑推理!我试过int main(){},以return 0结束它;没有scanf它工作正常,就像我使用任何其他函数,如printf(...)但我无法弄清楚为什么我执行后立即没有任何反应,我只能通过使用ctrl + z返回。我将它与其他类似代码进行了比较,看不出原因。

不,它不是坐​​在那里等待输入。从字面上看,屏幕就像在无限循环中一样熄灭。

从评论来看,逻辑上没有任何问题,它必须是背景中的东西,比如缺少一些图书馆资源(尽管我认为这不太可能)。

Nonononononono ...为什么没有图像?这会对情况有所帮助!!

1 个答案:

答案 0 :(得分:1)

实际上工作正常。甚至添加了一个打印语句来检查。我认为你输入一个带有无限循环的数字令人困惑,因为没有循环开始。

#include <stdio.h>

main() {
    float num = 0;
    scanf("%f", &num);
    printf("%f\n", num);
}

尝试一下:https://ideone.com/RBDTYf