C / C++ bit by bit --- exe to text y text to exe

Iniciado por <<<-Basura->>>, 27 Febrero 2014, 05:16 AM

0 Miembros y 1 Visitante están viendo este tema.

rir3760

Debes cambiar la condicion del if:
if (pFile==NULL && newFile==NULL)
   perror ("Error opening file");

Ya que el mensaje de error solo se presentara si la apertura de ambos archivos falla (se debe sustituir "&&" por "||").

Y si piensas leer caracter por caracter puedes utilizar las funciones fgetc y fputc. Por ejemplo:
#include <stdio.h>

int main(void)
{
   FILE * pFile;
   FILE * newFile;
   int ch;
   
   if ((pFile = fopen("Hola.exe", "rb")) == NULL)
      perror("Hola.exe");
   else if ((newFile = fopen("EXE.exe", "wb")) == NULL)
      perror("EXE.exe");
   else
      while ((ch = fgetc(pFile)) != EOF)
         fputc(ch, newFile);
   
   if (pFile != NULL)
      fclose(pFile);
   if (newFile != NULL)
      fclose(newFile);
   
   return 0;
}


Sin embargo el programa lo unico que hace es una copia del archivo original, para el caso mejor utiliza una funcion cortesia del SO (en MS Windows puedes utilizar CopyFile y CopyFileEx).

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

<<<-Basura->>>

Gracias: rir3760, Tu solución también funciona.

No estoy buscando crear una copia del archivo original.
<<<--Basura-->>>