2015-02-09 2 views
-1

У меня есть-структуру, которая хранит некоторые данные ByteArrayЗапись ByteArray в файл в с

typedef struct { 
    uint32_t length; 
    uint8_t* bytes; 
} FREByteArray; 

И вот я пытаюсь сохранить это в файл

FREByteArray byteArray; 

if((fileToWrite = fopen(filePath, "wb+")) != NULL){ 
    fwrite(&byteArray.bytes, 1, byteArray.length, fileToWrite); 
    fclose(fileToWrite); 
} 

Но это, кажется, не сохранить все данные, размер сохраненного файла - 16 КБ, фактические данные - около 32 КБ. Я думаю, что fwrite не может записать весь файл bytearray в файл.

Это правильный способ сохранить ByteArray? Есть ли ограничение, какое количество фреймов может обрабатывать в одном вызове?

+4

Удалить строку '&' в строке 'fwrite' –

+0

' yteArray.bytes' - это указатель, который не использует '&' для получения адреса снова – Gopi

ответ

3

Заменить

fwrite(&byteArray.bytes, 1, byteArray.length, fileToWrite); 

с

fwrite(byteArray.bytes, 1, byteArray.length, fileToWrite); 

И как отметил @Sourav Гош убедитесь, что byteArray.bytes указывает на правильное расположение источника.

+0

.. для вычисления 'byteArray.bytes' выделена память правильно. :-) –

+0

и при условии, что byteArray.length имеет правильную длину. – vvvv

 Смежные вопросы

  • Нет связанных вопросов^_^