输出一个整数数组以垃圾结束
Printing out an integer array ends with garbage
我有以下代码应该打印数组的3072个整数:
for(int q=0; q < 3072; q++) printf("%x", band->GetData(q));
有人会认为它将打印3072个整数,但是我得到3075个整数,最后有3个可能是垃圾。使用以下代码打印到文件
fp=fopen("filename", "w");
fwrite(band->GetBuffer(), sizeof(int), 3072, fp);
fclose(fp);
的结尾几乎相同,只是在末尾多了3个字节。使用不同的数组会产生不同长度的垃圾。
我想问为什么会发生这种情况,它是否真的是垃圾。
谢谢你。
int GetData(unsigned int pos) const { ASSERT(pos < m_size); return m_data[pos]; }
int* GetBuffer() { return m_data; }
fwrite
的问题可能是因为您以文本模式打开了文件,并且写入文件的任何0x0a
字节将扩展为0x0d 0x0a
。
printf
的问题是您没有在数字之间放置任何分隔符,因此您错误地计算了输出。
相关文章:
- 取消引用结束指针到数组类型的一个
- 数组对象的生存期是否在重用其元素存储时结束?
- 二进制数组中最大连续 1 的起始和结束索引,以 C++ 为单位
- 当字符串为"\0"时如何结束 2D 字符数组?
- 如何获取由 new 创建的数组的开始和结束
- 重写自定义数组类的运算符/开始/结束
- C++ char 数组特征:为什么字符串在数组结束之前停止?
- C 排序无法解析标识符开始和结束吗?(将数组保持在一起)
- C 读取输入,直到线char数组的结束
- 将数组作为函数参数传递,并在其上调用开始/结束方法
- 当我使用 += 将数字添加到数组中时,无论数字是什么,它总是以 0 结束
- C 指针数组使用STL开始和结束
- STD ::结束如何在本机数组上工作
- 如果用户输入 -1 作为动态数组中的数字,如何结束程序
- 通过在上一个数组结束后立即存储下一个元素来扩展数组
- char数组在结束前包含空字符
- 如何将排序的元素从数组中的起始索引获取到结束索引
- std::以原始字符数组结束
- 如果最后一个地址是0xFFFFFFFF,我如何获取数组结束后的地址
- While(数组结束)-如何识别