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

代码编译无报错但运行崩溃,求排查C语言数组输入输出问题

问题分析与解决

错误原因

程序崩溃的核心问题是scanf函数的参数传递错误:

  • scanf的第二个参数必须传入变量的内存地址,用于存储用户输入的值。
  • 你直接传入了marks[0]、marks[1]、marks[2],这些是数组元素的未初始化随机值,而非地址。这会导致scanf尝试写入非法内存区域,触发程序意外终止。

另外还有个细节问题:后两个输出语句的描述有误,都写了"first array",应该对应修改为"second"和"third"。

修正后的代码

#include<stdio.h>
#include<conio.h>
int main(){
    int marks[3];
    printf("enter number for first array\n");
    scanf("%d", &marks[0]);
    printf("enter number for second array\n");
    scanf("%d", &marks[1]);
    printf("enter number for third array\n");
    scanf("%d", &marks[2]);
    printf("the value of first array is %d\n", marks[0]);
    printf("the value of second array is %d\n", marks[1]);
    printf("the value of third array is %d\n", marks[2]);
    return 0;   
}

补充说明

  • 给数组元素添加&取地址符后,scanf就能正确将输入值写入对应的数组元素内存中。
  • 加入换行符\n可以让输入提示和输出内容更清晰,避免排版混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:50:27