c - 添加不相关的代码会更改相同打印的输出
问题描述
我有一个在嵌入式系统上运行的 C 程序。这是在开始时声明的:
__attribute__((section(".graph"))) __attribute__((aligned(4)))
char bm_char[((FRAME_WIDTH * FRAME_HEIGHT /16) * 2) + 120];
在main()
,bm_char
中用字符串初始化"1"
:
for (i = 0; i < (((FRAME_WIDTH * FRAME_HEIGHT /16) * 2) + 120); i++)
{
bm_char[i] = "1";
}
最后:
FILE *file = fopen("Bitmap.txt", "w");
int results = fputs(bm_char, file);
我运行了代码,Bitmap.txt
是这样的:
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
我在代码中添加了一个新的、不相关的行,输出变为:
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
然后再一行:
²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²
还有一个:
’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
为什么会这样?是内存问题吗?
解决方案
bm_char[i]
是 a char
,但您为其分配了一个指针 - 这不是有效的 C。添加更多代码只是移动该字符串常量(更改其指针,因此更改您最终存储在数组中的值)。你真正想要的是:
bm_char[i] = '1';
在将其传递bm_char
给fputs
.
另外:您应该从原始代码中获得编译器诊断 - 注意并修复这些警告的原因!
推荐阅读
- data-structures - 动态数组中可以有不同类型的原始数据类型吗?
- sql - 我想进行特定查询以对有关 2 个表的特定信息进行分组
- visual-studio - CEdit 适用于 ComCtrl32 版本 5.82 但不适用于 6.10
- makefile - make install -j8: ldconfig 无法并行运行
- cucumber - 当步骤失败时,如何将屏幕截图附加到柏树中的黄瓜报告?
- machine-learning - 使用深度学习进行人脸识别
- python - 制作对应于无序键列表的字典值列表
- python - 无法导入 CSV 文件 Python
- c - 如何检查一个单词是否包含c中的数字
- javascript - JavaScript:如何有效地将数组对象项检索到某个属性?