CodeBlocks数组输入程序运行异常求助:黑屏无输出且返回错误码
解决程序运行黑屏及错误码0xC00000FD的问题
嘿,我来帮你揪出问题根源啦!你碰到的错误码0xC00000FD一般是非法内存访问或者栈溢出导致的,咱们拆解下你的代码哪里出问题了:
代码里的核心问题
- 未初始化变量就定义数组:你先声明了
int i;,接着直接用int usernumbers[i];创建数组——这时候i是未初始化的随机值,数组大小完全不可控,分分钟触发内存错误。而且你把数组最大容量const N = 50;放在数组定义之后,顺序完全搞反了。 - scanf参数错误:
scanf("%d", usernumbers[i]);这里少了关键的取地址符&!scanf需要传入变量的内存地址才能正确写入输入值,你直接传usernumbers[i]的话,会把输入的数字当成内存地址去写入,这绝对会触发非法内存访问,直接导致程序崩溃。 - 循环逻辑完全混乱:你把while和for嵌套的逻辑搞反了,本来应该是用while循环持续接收输入,直到用户输入-1或0,结果嵌套了一个for循环要先填满50个位置,程序刚运行就陷入错误流程,自然黑屏没反应。
- 输出未过滤无效元素:最后直接遍历整个50元素数组,但用户可能只输入了几个数字,剩下的都是未初始化的垃圾值,输出这些毫无意义。
修正后的代码
#include <stdio.h> int main() { const int N = 50; // 先定义数组最大容量 int usernumbers[N]; // 用固定大小创建数组 int i = 0; // 初始化输入计数器 int input; // 临时存储用户输入 printf("Write an integer (-1 or 0 to stop)\n"); scanf("%d", &input); // 先读取第一个输入 // 循环接收输入:满足非终止值且未超过数组容量 while ((input != -1 && input != 0) && i < N) { usernumbers[i] = input; i++; printf("Next number: \n"); scanf("%d", &input); } printf("The numbers you entered are: \n"); // 只输出用户实际输入的有效数字 for (int j = 0; j < i; j++) { printf("%d ", usernumbers[j]); } printf("\n"); return 0; }
修正点说明
- 先定义数组最大容量
N,再用它创建数组,确保数组大小固定合法; - 用临时变量
input接收输入,给scanf加上&,保证输入能正确写入变量; - 调整循环逻辑:先读第一个输入,再用while循环判断是否继续接收,同时限制不超过数组容量,每接收一个有效数字就存入数组并增加计数器;
- 输出时只遍历到用户实际输入的数量
i,避免输出未初始化的垃圾值。
内容的提问来源于stack exchange,提问作者angel
相关产品推荐
相关产品推荐

