2010-09-19 2 views
4
#include <Windows.h> 
#include <stdio.h> 

int count = 0; 
FILE* pFile = 0; 
long Size = 0; 

void *memfrob(void * s, size_t n) 
{ 
    char *p = (char *) s; 

    while (n-- > 0) 
     *p++ ^= 42; 
    return s; 
} 

int main() 
{ 
    fopen_s(&pFile, "***", "r+"); 
    fseek(pFile, 0, SEEK_END); 
    Size = ftell(pFile); 
    char *buffer = (char*)malloc(Size); 
    memset(buffer, 0, Size); 
    fread(buffer, Size, 1, pFile); 
    fclose(pFile); 
    memfrob(buffer, Size); 
    fopen_s(&pFile, "***", "w+"); 
    fwrite(buffer, Size, 1, pFile); 
    fclose(pFile); 
} 

Привет, fread ничего не читает из файла в буфер, и я не могу понять, почему. Может ли кто-нибудь дать мне подсказку или толчок в правильном направлении?fread() не записывается в буфер

+0

Проверьте коды возврата ошибок из операций с файлами - вы не знаете, какие из них не работают. –

ответ

11

Перед тем, как отправиться в путь, вам нужно вернуться к началу файла.

+0

Также нет необходимости закрывать и открывать файл перед записью; режим '' r + "' означает, что он открыт для чтения и записи. Тем не менее, вам нужно будет начать еще раз, прежде чем писать. –

4

Вы делали fseek в конце файла и не видели его до того, как сделали fread.

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