Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841

    copia di un file...

    ho provato questo codice per copiare un file...
    con un file txt funziona ma con un exe lo distrugge durante la copia...
    come posso fare per creare un codice che copia senza problemi qualsiasi tipo di file???
    grazie ciao
    codice:
        char *buf;
        buf = new char [512];
        FILE *f, *f_out;
        if ((f = fopen("prova.exe", "rb")) && (f_out = fopen("copiadiprova.exe", "wb")))
    	{
    		while (fgets(buf, 512, f))
    			fprintf(f_out, "%s", buf);
    		fclose(f);
    		fclose(f_out);
    	}

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Con la printf scrivi una stringa terminata da zero binario. Ma in un file binario (come un exe) i dati non sono organizzati in stringhe terminate da zero, anzi, qualsiasi carattere, compreso gli zeri binari, fanno parte del file ...

  3. #3
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    .... quindi che modifica devo fare allo script scritto sopra???

    grazie ciao

  4. #4

    Re: copia di un file...

    Queste funzioni sono indicate per i file di testo
    codice:
    		while (fgets(buf, 512, f))
    			fprintf(f_out, "%s", buf);
    Sostituiscile con queste, ed il prog funzionerà.

    codice:
    		while( fread( buf, 512, 1, f) )
    			fwrite( buf, 512, 1, f_out);
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  5. #5
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    grazie mille ciao

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466

    Re: Re: copia di un file...

    Originariamente inviato da Samuele_70
    Queste funzioni sono indicate per i file di testo
    codice:
    		while (fgets(buf, 512, f))
    			fprintf(f_out, "%s", buf);
    Sostituiscile con queste, ed il prog funzionerà.

    codice:
    		while( fread( buf, 512, 1, f) )
    			fwrite( buf, 512, 1, f_out);
    No ... non penso ... a meno che la lunghezza del file non sia multipla di 512 ... e non e' sempre cosi' ...

  7. #7
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    e allora come si fa per costruirne uno che funzioni con qualsiasi file???

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    codice:
         size_t b;
         while(b=fread( buf, 1, 512, f) )
                    fwrite( buf, 1, b, f_out);

  9. #9

    Re: Re: Re: copia di un file...

    Originariamente inviato da oregon
    No ... non penso ... a meno che la lunghezza del file non sia multipla di 512 ... e non e' sempre cosi' ...
    Si a rigor di logica hai ragione, eppure l'ho provato con vari file .exe di lunghezza diversa e ha sempre funzionato.
    La copia del file originale è sempre identica a quella del file originale.
    La copia del file .exe funziona correttamente.
    Perchè non da i problemi che ci si dovrebbero aspettare ?
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Veramente ho avuto il problema al primo file copiato ... erano di lunghezze diverse ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.