【发布时间】:2012-12-02 04:25:12
【问题描述】:
我正在尝试将输入输入到数组中,直到用户输入 -1 以退出输入模式。
当输入 -1 但至少在输入了两个值之后,这段代码中发生了一些奇怪的事情。
#define ARRAYSIZE 100
int input[ARRAYSIZE];
int i=0;
do {
printf("Enter data #%d or -1 to exit: ", i);
scanf("%d", &input[i]);
} while(input[i++] != -1 && i<ARRAYSIZE)
代码将无限期挂起。我已经在两个独立的架构上编译和运行,但是在 gdb 中运行时问题没有出现。
插入打印语句显示代码确实挂在 scanf 语句处。
有人知道是什么原因造成的吗?
【问题讨论】:
-
呃,你按“回车”后它还挂着吗? “input[]”是否声明为具有一个或多个“int”元素的整数数组?进入循环前“i”是否初始化为0?
-
是的,谢谢你,我已经编辑了问题以明确说明
-
什么是条目?为什么不把
input[i++]!=-1作为退出检查? -
为什么要彻底改代码?这个问题不再有意义。您现在拥有的代码不会表现出您描述的行为。请不要通过随机更改其孤立的部分来制造虚假和无意义的问题。
-
@Luke Walsh - 请将代码改回原来的损坏版本,使其成为其他人的学习工具
标签: c arrays loops scanf freeze