C语言中整数变量赋值给二维数组后打印结果异常如何解决
问题根因
- 格式符匹配错误:
%c是字符格式符,会将传入的整数值作为ASCII编码解析输出对应字符。你存入Arr[1][1]的是整数5,对应ASCII表中不可见的控制字符ENQ,自然无法输出可见的数字5。日常打印可见的数字字符'5'对应的ASCII值为53,和整数5不是同一个概念。 - 语法错误:原代码中
printf行末尾缺少分号,代码无法通过编译。 - 潜在风险:如果二维数组
Arr的元素类型不是整型、或者数组维度小于2(C语言数组下标从0开始,访问[1][1]需要数组至少2行2列),还会触发类型不匹配、数组越界的问题,你当前赋值为5的场景下暂不会触发数值溢出问题。
修复方案
- 提前确认数组定义合规:保证
Arr是元素类型为int的二维数组,且行列数均不小于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
相关产品推荐
相关产品推荐

