打印出整数数组以垃圾结束

时间:2011-10-06 19:31:15

标签: c++ visual-studio-2008

我有以下代码,应该打印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; }

1 个答案:

答案 0 :(得分:3)

fwrite的问题可能是因为您已在文本模式下打开文件,并且写入文件的任何0x0a字节都将扩展为0x0d 0x0a

printf的问题在于你没有在数字之间插入任何分隔符,所以你错误地计算了输出。