fread-Problem (war: Compilierproblem)



  • Hi!
    Ich habe eine Funktion um einen String aus einer Datei zu lesen:

    int a = 0;
      fread(&a, sizeof(int), 1, FileHandle);
    
      if (a < 1) return "";
      char * b = new char[a];
      fread(b, a, 1, FileHandle);
      return b;
    

    Da der Integer urplötzlich riesen minuswerte enthielt hab ich mir eine fReadInt Funktion geschrieben, die mir die Werte des FGETCs anzeigen soll.

    Dabei hat sich herausgestellt, das der Compilier ein Dateiende dort sieht (wegen Rückgabewert -1 von fgetc), wo gar keins ist. Es ist noch mitten in der Datei!

    Woran kann das liegen? Es wird kein fclose oder ähnliches ausgeführt da es sich um eine Schleife handelt.



  • Warum sollte das ein Compiler-Problem sein? Offensichtlich lässt sich das Programm doch erfolgreich kompilieren und linken!?

    Hast du schon mal zB. mit ftell überprüft, wo du dich gerade in der Datei befindest und ob du nicht doch versuchst, über EOF hinaus zu lesen?

    Ausserdem ist dein char*b zu klein, da fehlt das Byte für die Null-Terminierung.



  • Also das mit dem char *b war sowieso erstmal nur nen Test weil das mit dem Byte für Byte auslesen nicht ging *G* - aber trotzdem thx.

    Mit dem ftell guck ich gleich mal. Aber eigentlich muss er noch mitten in der Datei sein da er eine Schleife durchläuft und man mit dem DOS Editor gut sehen kann das es dort noch laaaaaaaange weitergeht...

    Edit:
    Zitate bitte auf das Notwendigste beschränken. Danke!
    Jansen


Anmelden zum Antworten