Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    136

    [C++] - Scrivere su file contenuto di un buffer

    ciao a tutti,
    devo scrivere il contenuto di un buffer su un file di .txt, come devo fare ?

    ho provato in questo modo :

    codice:
    FILE *file;
    file = fopen("prova.txt","w");
    if (file != NULL) {
       fprintf (file, "%s",memdata);
    }
    fclose(file);
    dove memdata è una locazione di memoria.

    facendo cosi però non mi viene scritto il vero valore del buffer, ma solo qualche carattere.
    come posso fare per far scrivere tutti i dati contenuti nel buffer ?

    Grazie!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Cosa e' memdata ? E' una stringa terminata da carattere NULL ?

    Che vuoi dire con "una locazione di memoria"?

    Dovresti mostrare la dichiarazione di memdata, l'unica cosa importante che non hai scritto ... se devi scrivere i valori binari allora devi usare la fwrite

  3. #3
    Io ho provato a fare questo programma:
    #include <cstdlib>
    #include <stdio.h>

    int main()
    {
    char memdata[200]="Questa è una prova di testo\0";
    FILE *file;
    file = fopen("prova.txt","w");
    if (file != NULL) {
    fprintf (file, "%s",memdata);
    }
    fclose(file);
    }

    Funziona benissimo: viene generato un file "prova.txt" che contiene "Questa è una prova di testo"! Cosa c'è che non va?Forse hai sbagliato in un altro punto?
    Hai usato un buffer che non è una stringa? :rollo:
    printf("Programmazione in C!");
    cout<<"Programmazione in C++!";

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    136
    il mio memdata contiene dati binari, e vorrei che stampassae dati binari e non una stringa..

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    E quindi usa la fwrite ...

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    136
    ho provato a usare l fwrite, ma non mi scrive niente sul file.
    io faccio cosi :


    LPSTR memdata;


    FILE *file;
    file = fopen("prova.txt","w");
    fwrite (memdata, 0 , 2000000, file );
    fclose(file);

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Prima di tutto, stai dicendo alla fwrite di scrivere 2000000 elementi di lunghezza 0, per un totale di 0 byte ...

    E secondo, stai utilizzando un puntatore (memdata) mai inizializzato, e questo e' un ottimo metodo per avere un crash ...

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    136
    ok, ho trovato l'errore.

    FILE *file;
    file = fopen("prova.txt","w");
    fwrite (memdata, 1 , sizeof(memdata), file );
    fclose(file);

    mettendo 0 non scriveva niente.

    Scusate se prima ho aperto una discussione simile.

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    136
    me ne sono accorto
    grazie mille per l'aiuto.

    la varaibile la inizializzavo ben, era quello 0 che non mi faceva scrivere niente

    Grazie a tutti!

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Originariamente inviato da emi81
    ok, ho trovato l'errore.

    FILE *file;
    file = fopen("prova.txt","w");
    fwrite (memdata, 1 , sizeof(memdata), file );
    fclose(file);

    mettendo 0 non scriveva niente.

    Scusate se prima ho aperto una discussione simile.
    Sì ... ma cosi' e' sbagliato ...

    Se scrivi 1 elemento di grandezza sizeof(memdata), non farai altro che scrivere sempre e comunque 4 byte, perche' il sizeof di un puntatore (su Win32) e' di 4 byte.

    Se vuoi scrivere il numero di byte puntati da memdata, devi specificarlo con una costante.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.