2017-10-12 16 views
2

J'ai récemment essayé d'en apprendre plus sur la copie de fichiers par octets, mais j'ai des problèmes. Lors de la vérification des octets du notepad.exe original contre notepad2.exe, même si la taille fread et frwite est cohérente à travers la lecture et l'écriture, j'obtiens des résultats différents. Je peux être sous le mauvais postulat qu'il fonctionne même comme ça, je suis assez nouveau pour travailler avec la manipulation de niveau inférieur de la mémoire. Merci à l'avance pour l'aide des gars.Comment copier correctement un octet exécutable octet par octet

+0

Je vais tomber une fois et laisser mourir, laissez-moi savoir si quelqu'un a une solution. exe original est 256kb réécrit un est de 257kb et inopenable – Wilky

Répondre

1

Téléchargez un éditeur hexadécimal et vérifiez visuellement les deux octets de fichiers là. Cela rendra plus facile de voir où les choses ont mal tourné.

De toute évidence, vous avez des octets supplémentaires (peut-être beaucoup de valeurs 00) mais ... est-il à l'avant ou à l'arrière des octets de fichiers copiés?

  • Valeur de contrôle de Fsize, et la durée de ret (vérifier avant fwrite), sont tous deux
    correspondant à vos montants attendus?

  • Au lieu de: ofile = fopen("notepad2.exe", "w");
    paramètre try comme:
    ofile = fopen("notepad2.exe", "wb");

  • Utilisez un while ou d'une boucle for à lire chaque octet unique à partir ret et écriture/append la même valeur octet dans le fichier disque (notepad2.exe).

+0

Travaillé n'était pas écrit en mode binaire, miss facile merci pour la réponse. – Wilky