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

C语言中整数变量赋值给二维数组后打印结果异常如何解决

问题根因
  • 格式符匹配错误:%c是字符格式符,会将传入的整数值作为ASCII编码解析输出对应字符。你存入Arr[1][1]的是整数5,对应ASCII表中不可见的控制字符ENQ,自然无法输出可见的数字5。日常打印可见的数字字符'5'对应的ASCII值为53,和整数5不是同一个概念。
  • 语法错误:原代码中printf行末尾缺少分号,代码无法通过编译。
  • 潜在风险:如果二维数组Arr的元素类型不是整型、或者数组维度小于2(C语言数组下标从0开始,访问[1][1]需要数组至少2行2列),还会触发类型不匹配、数组越界的问题,你当前赋值为5的场景下暂不会触发数值溢出问题。
修复方案
  1. 提前确认数组定义合规:保证Arr是元素类型为int的二维数组,且行列数均不小于2,避免下标越界;
  2. 修正printf的格式符,将%c替换为用于打印十进制整数的%d,同时补全语句末尾缺失的分号。

修复后的可运行代码片段:

// 读取文件中的4个整数到对应变量
fscanf(f, "%d %d %d %d", &eg1, &eg2, &eg3, &eg4);    
Arr[1][1] = eg1;
// 用%d格式符打印整数,补全分号
printf(" %d", Arr[1][1]);

补充说明:如果你需要打印的是字符形式的'5'而非整数值5,可以将赋值语句改为Arr[1][1] = eg1 + '0';,这时候保留%c格式符也能输出可见的字符5,注意此时数组Arr的元素类型需要定义为char。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 09:24:35