Я запишет данные из моего буфера, который определяется какЗапись буфера в файл (хранится 1585 байт вместо 1580)
char outBuff[16000];
в файл. Я загрузил данные из другого файла 1580 байт. После этого я сохранил эти данные в новом файле с функцией WriteAllBytes. В переменной count
было значение = 1580, но размер файла на диске составлял 1585 байт. Оттуда это различие?
static bool WriteAllBytes(char * filename, const char * pWriteBuff, int size)
{
FILE * pFile = fopen(filename, "w");
ofstream fout("test.txt");
if (!pFile)
return false;
int count = 0;
for (int i = 0; i < size; i++)
{
if (fwrite(pWriteBuff, 1, 1, pFile) != NULL)
{
pWriteBuff++;
count ++;
}
fout << *pWriteBuff;
}
if (count != size)
return false;
fclose(pFile);
}
Показать, как вы называете 'WriteAllBytes'. Не имеет прямого отношения к вашему вопросу: почему бы вам просто не называть один раз 'fwrite (pWriteBuff, 1, size, pFile)' вместо того, чтобы писать 'size' раз один сингл-байт? BTW посмотрите на свой код, там '}' отсутствует где-нибудь около 'count ++'. –
Примечание: файлы уже буферизованы ОС. Если вы используете 'std :: ofstream', они также буферизуются объектом. –
Обновите свой вопрос вместо комментариев. –