C 代码卡在 scanf() 语句

标签 c arrays loops scanf freeze

我正在尝试将输入输入到数组中,直到用户输入 -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中运行没有出现问题。

插入 print 语句显示代码确实卡在 scanf 语句处。

有谁知道是什么原因造成的?

最佳答案

你从来没有检查你保存的数据的值(它是检查下一个未初始化的元素),do while 更合适

#define ARRAYSIZE 100
int input[ARRAYSIZE],i=0;
do {printf("Enter data #%d or -1 to exit: ", i);
    scanf("%d", &input[i]);
}while(input[i] != -1 && ++i<ARRAYSIZE);
//if this is main() you need a return 0; here also or it will hang

关于C 代码卡在 scanf() 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13666396/

相关文章:

iphone - 使用自定义类的实例对数组进行排序

php - 在 php 中用循环定义二维数组

javascript - 尝试使用循环向 Javascript 对象添加多个属性

c - GCC 编译器并将 const char* 转换为 char *

javascript - JQuery 或 JavaScript - 计算有多少数组元素是真/假

c - 无法释放内存

arrays - 对数组的特定列进行计算

java - 如何从java中的for循环中减去

c - _GNU_、_attribute_ 和 pragma 扩展和指令的含义是什么

C - 将不同的回调函数地址存储在一个数组中