You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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;
}

修正点说明

  1. 先定义数组最大容量N,再用它创建数组,确保数组大小固定合法;
  2. 用临时变量input接收输入,给scanf加上&,保证输入能正确写入变量;
  3. 调整循环逻辑:先读第一个输入,再用while循环判断是否继续接收,同时限制不超过数组容量,每接收一个有效数字就存入数组并增加计数器;
  4. 输出时只遍历到用户实际输入的数量i,避免输出未初始化的垃圾值。

内容的提问来源于stack exchange,提问作者angel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:30:43