2010-09-19 18 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); 
} 

Salut, fread ne lit rien du fichier au tampon et je n'arrive pas à comprendre pourquoi. Quelqu'un pourrait-il me donner un indice ou une poussée dans la bonne direction?fread() n'écrit pas dans le tampon

+0

Vérifiez les codes de retour d'erreur à partir des opérations sur les fichiers - vous ne savez pas lesquels échouent. –

Répondre

11

Vous devez rechercher le début du fichier avant de commencer.

+0

Il n'est également pas nécessaire de fermer et de rouvrir le fichier avant d'écrire; le mode '" r + "' signifie qu'il est ouvert pour la lecture et l'écriture. Vous auriez cependant besoin de chercher au début une fois de plus avant de faire l'écriture. –

4

Vous avez fait un fseek à la fin du fichier et n'avez pas récupéré avant que vous ayez fait la fread.