我有以下代码,应该打印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; }
答案 0 :(得分:3)
fwrite
的问题可能是因为您已在文本模式下打开文件,并且写入文件的任何0x0a
字节都将扩展为0x0d 0x0a
。
printf
的问题在于你没有在数字之间插入任何分隔符,所以你错误地计算了输出。