Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Belial & Grimoire en 3 Mayo 2010, 03:45 am



Título: como puedo usar fgetc y fputc sin interrumpir algo y poder concatenar?
Publicado por: Belial & Grimoire en 3 Mayo 2010, 03:45 am
hola

tengo una duda... estoy tratando de aprender a programar algo parecido a los programas como winrar, etc... estuve investigando y para mi se parecen a los joiners...

ahorita tengo un problema con una parte del codigo que no se como hacer...

logre hacer una copia exacta de un archivo, usando fgetc y fputc, pero se me ocurrio hacer un joiner para empezar a entender mejor, ya que los otros programas usan psx y no se que mas... pero bueno, como les mencionaba

en el codigo que les menciono que ya hice logro copiar bien el archivo, pero lo que quiero es leer un archivo con autolectura y split, al final de todo concatenar una firma, y despues leer el archivo que quiero unir y guardarlo alli mismo para crear un executable

para que al ejecutar ese archivo se autolea, separe la informacion usando la firma y haga un nuevo archivo con la informacion separa con el split y se muestre el archivo como originalmente es

lo que no logro hacer es como concatenar esto, tengo el problema de que si uso fgetc en un while usando feof puedo extraer la informacion, pero si en el mismo while no uso fputc y lo uso en otro lado ya no me funciona

y lo que quiero es lograr extraer la informacion con fgetc, concatenar la firma, extraer la informacion igual con fgetc del archivo a unir y guardarlo para crear un executable...

pero como menciono, si no utilizo fgetc y fputc en el mismo while sin interrumpirlo por algun if por ejemplo... el programa se crea pero no funciona

alguien sabe como puedo leer, concatenar, volver a leer para concatenar de nuevo y al final, guardar todo eso en un archivo nuevo?

esto es lo que llevo del codigo, espero alguien me pueda dar sugerencias.. gracias

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.    FILE *entrada;
  7.    FILE *salida;
  8.    char ent;
  9.    int i = 0;
  10.  
  11.    entrada = fopen("C:\\crear.exe", "rb");
  12.    salida = fopen("C:\\nuevo.exe", "wb");
  13.  
  14.    while(!feof(entrada)){
  15.        ent = fgetc(entrada);
  16.        fputc(ent, salida);
  17.    }
  18.  
  19.  
  20.    fclose(entrada);
  21.    fclose(salida);
  22.  
  23. }

salu2


Título: Re: como puedo usar fgetc y fputc sin interrumpir algo y poder concatenar?
Publicado por: Dellarts en 3 Mayo 2010, 20:21 pm
Con fputs y fgets no he conseguido encontrar el error aqui esta mi propuesta a mi me funciona.

Código:
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    FILE *entrada;
    FILE *salida;
    char ent;
    int i = 0;
 
    entrada = fopen("crear.exe", "rb");
    salida = fopen("nuevo.exe", "wb");
 
    while(!feof(entrada)){
        fread(&ent, 1,1,entrada);
    fwrite(&ent, 1, 1, salida);
    }
    fclose(entrada);
    fclose(salida);
}


Saludos


Título: Re: como puedo usar fgetc y fputc sin interrumpir algo y poder concatenar?
Publicado por: Belial & Grimoire en 4 Mayo 2010, 23:58 pm
hola

gracias por responder, pero asi tambien tengo el mismo problema

lo que quiero hacer es con el while abrir dos archivos, concatenar algunos simbolos paara hacer esto

archivo1 + simbolos + archivo2

pero en el while puedo leer bien el archivo que quiero, pero si fwrite o fputc lo pongo afuera del while, ya no me guarda la informacion bien

y necesito extraer la informacion con el while, despues cuando termine... concatenar algunos simbolos, y concatenar la siguiente informacion...

algo asi

while(!feof(archivo1)){
}
while(!foef(archivo2)){
}

strcpy(nuevo,archivo1);
strcat(nuevo, "--__--");
strcat(nuevo,archivo2);

despues, fwrite o fputc

el problema es que si lo hago asi... como mencione... afuera de while si uso fwrite o fputc no me crea el archivo completo, solo me guarda una pequeña parte y se cierra por error

alguna idea de como podria hacer eso?