输出一个整数数组以垃圾结束

Printing out an integer array ends with garbage

本文关键字:数组 结束 整数 一个 输出      更新时间:2023-10-16

我有以下代码应该打印数组的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的问题是您没有在数字之间放置任何分隔符,因此您错误地计算了输出。