2009-11-06 4 views
0

Je souhaite copier un fichier binaire maître dans un nouveau fichier binaire. Ce fichier ne contient rien mais a une taille prédéfinie (20000 lignes).Problème MFC pour copier le fichier binaire

Voici ce que je fais:

 FILE *A_Lire; 
    FILE *A_Creer; 

A_Lire = fopen(MASTERPath,"rb"); 
A_Creer = fopen(PARTPRGPath, "wb"); 

fseek(A_Lire,0,SEEK_END); 
int end = ftell(A_Lire); 

char* buf = (char*)malloc(end); 

fread(buf,sizeof(char),end,A_Lire); 
fwrite(buf,sizeof(char),end,A_Creer); 

fclose(A_Creer); 
fclose(A_Lire); 

Ce code crée le nouveau fichier avec la bonne taille, mais ce n'est pas exactement le même fichier parce que je ne suis pas en mesure de ce nouveau fichier utilisé comme maître . Quelque chose est différent, peut-être corrompu, peut-être le moyen d'écrire dans le fichier ???

Avez-vous une idée?

Je pense que ce code est MFC

Merci,

Répondre

2

quand vous faites fseek (.. SEEK_END), la position dans le fichier ouvert est à la fin, chaque fois que vous appelez fread, vous obtenez 0 octets que vous êtes à la fin.

Il suffit de faire un retour rapide après:

 
fseek(A_Lire,0,SEEK_END); 

int end = ftell(A_Lire); 

fseek(A_Lire,0,SEEK_SET); 
+0

+1, même si je pense qu'il est SEEK_SET au lieu de SEEK_BEGIN – schnaader

+0

Merci beaucoup !!!!!!! – user90714

+0

Je suis d'accord, je suis en train d'éditer la réponse, merci @schnaader – rossoft