Fread ließt nicht aus :(



  • moin moin,

    ich hätte mal eine Frake zu fread und zwar habe ich folgendes Programm geschrieben

    #include<stdio.h>
    #include<stdlib.h>
    
    main(){
           char text[1000];
           FILE *datei;
    
           datei = fopen("acdx.txt", "r");
    
           if(datei != NULL){
           fread(text, sizeof(char), 100, datei);
           }
    
           system("PAUSE");
           return 0;
           }
    

    Aber das Programm ließt die es nicht aus und das obwohl ich extra nochmal bei C von A bis Z nachgeguckt habe 😃

    Kann mir jemand helfen???



  • fread(name, sizeof(char) schrieb:

    Aber das Programm ließt die es nicht aus

    Wie stellst Du das denn fest?



  • Wie stellst du fest, dass die Daten nicht ausgelesen werden?



  • Jürgen Wolf der Autor des Grauens. Sein C-Buch scheint wohl nicht besser zu sein, als sein C++ Pendant.



  • Die Strings werden nicht auf dem Bildschirm ausgegeben, daher stelle ich dies fest!



  • fread(name, struct(char) schrieb:

    Die Strings werden nicht auf dem Bildschirm ausgegeben, daher stelle ich dies fest!

    In deinem Code ist auch keine Ausgabe vorhanden...



  • Und wie würde die Ausgabe aussehen? Ich meine ich wüsste nciht wie war auch in dem Beispiel nicht vorhanden. Kann mir jemand bitte helfen? 😮



  • ganz primitiv wäre das wohl einfach:

    fread(...)
    printf(text);
    

    Du solltest aber das char-Array vor dem fread-Aufruf mit memset nullen, damit der ausgelesene String "auf jeden Fall" nullterminiert ist (wenn du allerdings auf die Idee kommst, ganze 1000 Zeichen auszulesen, die auch tatsächlich gelesen werden, dann ist der String nicht nullterminiert, da du für das Null-Zeichen ein extra char braucht. Du dürftest mit dem von dir definierten Array maximal 999 Zeichen auslesen).



  • fread(name, sizeof(char) schrieb:

    obwohl ich extra nochmal bei C von ? bis ? nachgeguckt habe 😃

    O.g. Referenz ist hier wegen Inkompetenz verpönt.
    So würde man Textdateien richtigerweise durchlaufen und zeilenweise ausgeben:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(){
           char text[1000];
           FILE *datei;
    
           datei = fopen("acdx.txt", "rt");
    
           if(datei != NULL){
           while( fgets(text, 1000, datei) ) printf("%s",text); fclose(datei);
           }
    
           return 0;
           }
    


  • [cpp]
    #include <stdio.h>
    #include <stdlib.h>

    int main(){
    char text[1000**+1**];
    FILE *datei;

    datei = fopen("acdx.txt", "rt");

    if(datei != NULL){
    while( fgets(text, 1000, datei) ) printf("%s",text); fclose(datei);
    }

    return 0;
    }
    [/cpp]

    Ich Sicherheitsdenker 🙄



  • char text[1000] passt schon.

    man page schrieb:

    char *fgets(char *s, int size, FILE *stream);
    ...
    fgets() reads in at most one less than size characters from stream



  • ok danke 🙂


Log in to reply