Problem bei fread



  • Hi, ich moechte eine datei mit fread auslesen, mein Code sieht dann folgendermaßen aus:

    char c;
    FILE *pfile;
    pfile=fopen("name","rb");

    if(!pfile)
    return;

    fread(&c,sizeof(char),1,pfile);
    printf("%s",txt);
    fclose(pfile);

    Was ist daran falsch? Wie kann ich das gelesene am schnellsten in Großbuchstaben umwandeln?

    Danke im voraus!!



  • printf("%s") erwartet eine Zeichenkette. Versuch mal printf("%c");

    Für Großbuchstaben gibts toupper in ctype.h.

    Btw, hier wäre fgetc() mehr angebracht als fread().



  • Bei %c gibt der mir aber nur ein Zeichen aus und nicht den ganzen Text!!



  • Na weil du mit fread() nur ein Zeichen einliest. Mehr würde in ein char auch garnicht reinpassen.



  • Wie kann ich dann mit fread den ganzen Text einlesen?
    Sorry , ich habe aber erst gerade angefangen zu programmieren!!



  • fread ist für lesen in binärdateien gadacht.

    fread(&c,sizeof(char),1,pfile);

    heisst soviel wie:
    hole _1_ objekt der grösse _char_ (=1byte) aus der datei auf die _pfile_ zeigt undschreib das ganze an die stelle &c

    das ist für das lesen austextdateien vielzu umständlich. nur notwendig wenn du "nicht-lesbare" binärdaten, etwa ein feld oder eine struktur in dateien speicherst.

    für deine zwecke ist fgetc einfacher/besser ...

    probiers mal damit 🙂



  • Deklarier doch "c" einfach mal als char-Zeichenkette und nicht als einzelnes Zeichen!



  • Hier ist mal ein kleines bsp zu fread ich habe es aber nicht getestet!

    {
    FILE *stream;
    char *puffer;
    int laenge;

    stream = fopen("C:\\test.bin", "wb");
    if(stream != NULL)
    {
    fseek(stream, 0, SEEK_END);//ans ende der Datei
    laenge = ftell(stream);//jetzt die groesse der Datei ermitteln
    fseek(stream, 0, SEEK_SET);//wieder an den Anfang

    puffer = (char*) malloc(laenge);/*den puffer so groß wie die Datei ist damit der ganze text reinpasst. */

    fread(puffer, laenge, sizeof(char), stream);
    printf("%s", puffer);
    fclose(stream);
    }
    }

    Vielleicht konnte ich dir ein bischen helfen aber wie gesagt ist nicht getestet bei Fragen Frag!
    MfG Schirrmie


Anmelden zum Antworten