Распечатка целочисленного массива заканчивается мусором - PullRequest
0 голосов
/ 06 октября 2011

У меня есть следующий код, который должен печатать массив из 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 Ответ

3 голосов
/ 06 октября 2011

Проблема с fwrite, вероятно, связана с тем, что вы открыли файл в текстовом режиме, и любые 0x0a байты, записанные в файл, будут расширены до 0x0d 0x0a.

Проблема сprintf означает, что вы не производите никаких разделителей между числами, поэтому вы неправильно подсчитываете вывод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...