Leere Dateien



  • Hi,

    Wie kann ich abfragen, ob eine Datei jetzt keinen Inhalt hat?
    Ich habe es mit "if (fread(line, sizeof(line), 1, f) == 0)" versucht, wobei line die Zeile der Datei ist, und f die Datei selbst.

    MfG



  • Was meinst Du mit "jetzt keinen Inhalt"? Ob sich der Dateizeiger am Ende befindet?

    Das gibt Dir 'f.eof()' zurück. Meinstens ist aber '!f.good()' bzw. einfach '!f' besser geeignet (da allgemeiner), um zu prüfen, ob aus einem Dateistrom im aktuellen Zustand etwas gelesen werden kann.



  • Hi,

    Ich verwende schon "if (f)" aber das kann es nicht sein, da der Rest danach auch noch weiterhin ausgeführt wird.

    Hier der Code:

    if (f)
                                    {
                                            if (!(feof(f) == 0))
                                            {
                                                  while (!feof(f))
                                                {
    
                                                     fgets(line, 1024, f);
                                                     if (sscanf(line,"%s %s %s %s",nick1, user, host, desc_bot))
                                                     {
                                                     send_nick(nick1, user, host, ServerName , desc_bot ,pseudoclient_modes);
                                                     }
                                                }
                                            }
                                            }
                                         fclose(f);
    

    Das bringt mich jedoch zu einem Segmentation fault, was könnte daran falsch sein?

    MfG



  • Äh, Du verwendest C-Dateizugriff, was? Da ist 'f' ein Handle, d.h. 'if (f)' liefert natürlich etwas ganz anderes. Aber da befindest Du Dich im falschen Forum, hier ist C++, nicht C. Wie's in C geht, weiß ich nicht.

    Spricht denn etwas gegen die Verwendung von C++-Dateiströmen?



  • Hi,

    Ja, Tatsache, falsches Forum, sorry.. Natürlich spricht nichts gegen C++ Dateiströme, aber ich schreibe an einem Modul, und das dazugehörige Programm ist (leider) in C geschrieben.. 😞

    MfG



  • Schau mal nach fseek ftell .

    Du kannst aus einer Kombi damit die Dateigröße bestimmen, wenn die 0 ist, ist halt nix in der Datei drinne.


Anmelden zum Antworten