"Leere" Dateien in C



  • Hi!

    Ich habe hier ein Programm, aber in dem Code scheint etwas nicht zu stimmen, denn obwohl ich eine Abfrage gemacht habe im Fall wenn die Datei leer wäre (0 Bytes eben), führt er den Befehl erst garnicht aus, ich bin mir bei dieser (feof(f) == 0)) Abfrage sehr unsicher, ob es das passende für mein Problem ist, denn das Programm bzw Modul verursacht einen Segmentation Fault.

    Ich will in diesem Code einfach nur verhindern, dass das Programm "send_nick" ausführt sowie sscan, wenn die Datei leer ist. Wie mach ich das am besten, und was ist in meinem Code falsch?

    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);
    

    Danke im Vorraus
    MfG



  • http://www.cppreference.com/stdio/feof.html schrieb:

    The function feof() returns a nonzero value if the end of the given file stream has been reached

    ... wenn diese Funktion dafür überhaupt geeignet ist ...



  • Hi,

    Hast du keine Alternative? Was kann ich denn verwenden?

    MfG



  • systray` schrieb:

    if (!(feof(f) == 0))
    {
       while (!feof(f))
       {
          ...
       }
    }
    

    lass das 'if' wech, also nur so

    while (!feof(f))
    {
       ...
    }
    


  • fclose(f);

    gehört in

    if (f)
    {

    }


Anmelden zum Antworten