Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    aiuto scrittura file binario

    salve il seguente codice ha dei problemi ma non riesco a capire quali...forse qualcuno puo aiutarmi





    #include <stdio.h>
    main ()
    {
    FILE *fp;
    char c;
    int fine;
    fp=fopen("testo.dat","wb");
    if (fp==NULL)
    printf("errore nell'apertura file\n");

    else
    { while (c!=EOF)
    c=getchar();
    fwrite(&c,sizeof(char),1,fp);

    }fclose(fp);
    }

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463

    Moderazione

    Un dubbio: lo indichi il linguaggio nel titolo?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    scusa se no l'ho specificato ma è in c

  4. #4
    Che tipo di problemi ? :master:

  5. #5

    Re: aiuto scrittura file binario

    Originariamente inviato da carmine82

    { while (c!=EOF)
    c=getchar();
    fwrite(&c,sizeof(char),1,fp);

    }fclose(fp);
    }
    Così strutturato il codice, effettua prima il controllo e poi l'assegnamento
    della variabile c, dovrebbe essere il contrario.
    01010011 01100001 01101101 01110101 01100101 01101100 01100101 01011111 00110111 00110000
    All errors are undocumented features waiting to be discovered.

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: aiuto scrittura file binario

    Originariamente inviato da carmine82
    #include <stdio.h>
    main ()
    {
    FILE *fp;
    char c;
    int fine;
    fp=fopen("testo.dat","wb");
    if (fp==NULL)
    printf("errore nell'apertura file\n");

    else
    { while (c!=EOF)
    c=getchar();
    fwrite(&c,sizeof(char),1,fp);

    }fclose(fp);
    }
    Il problema è che hai usato un while per testare il valore di 'c'. La prima volta che testi la variabile però non è inizializzata!!!! Inoltre il ciclo while è costituito solo dalla getchar.

    Quindi:
    codice:
    ...
    ...
    else
    {
        while ((c = getchar ()) != EOF)
            fwrite(&c,sizeof(char),1,fp);
    
        fclose (fp);
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Faccio notare inoltre che la getchar() restituisce un int e non un char . Questo per tenere conto del valore EOF . Saluti

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da king64
    Faccio notare inoltre che la getchar() restituisce un int e non un char . Questo per tenere conto del valore EOF
    Verissimo, king64! Però, giusto per precisazione, EOF che io sappia vale -1 e siccome il char è signed ... non è un errore gravissimo usare char invece di int.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Mi sembra che lo standard preveda che la getchar restituisca il carattere c letto come "unsigned char con cast ad int" oppure l'EOF ...

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