schleife wird nicht beendet



  • bei folgender herangehensweise liest es jede zeile aus.. aber irgendwie ist es eine endlosschleife weil er die Beendigungsbedingung nicht nimmt.. was ist falsch an dieser bedingung???

    #include blabla 
    
    int main 
    { 
      File *g; 
      g=fopen("c:\\test.txt","r"); 
      char line[20]; 
      do 
      { 
        fgets(line,sizeof(line),g); 
      }while(line!=NULL); 
      fclose(g); 
    }
    


  • Wie bereits gesagt, versuch es mal mit PADs Lösung und mach mal aus sizeof(line) 19, ich glaube es zwar nicht unbedingt, aber vielleicht liegt es doch daran.

    Code-Hacker



  • daran liegts nicht,, es funzt ja... er liest ordentlich aus aber es wird nicht beendet... das auslesen, obwohl keine Inhalt mehr da is...



  • Da du ja unbedingt crossposten mußt, schau dir mal den anderen thread an.

    Sonst kann man nur sagen "oleum and laborem perdidi"



  • warum nicht einfach:

    NOTA: fgets return EOF nicht NULL
    NOTA2: arbeite mit groessese buffer

    #include blabla

    int main(int argc,char **argv)
    {
    File *g;
    g=fopen("c:\\test.txt","r");
    char line[20];
    /* sizeof ist nur hier korrect siehe bsp_2. */

    while(fgets(line,sizeof(line),g))
    {
    mach_was();
    }
    fclose(g);
    return(0);
    }
    --------------------------bsp_2
    #include blabla
    #define MAX 256
    int main(int argc,char **argv)
    {
    File *g;
    g=fopen("c:\\test.txt","r");
    char line[MAX];
    mach_was(g,line);
    fclose(g);
    return(0);
    }

    int mach_was(FILE *g,char *line)
    {

    /* hier is 'line' ein char-pointer und sizeof == 4 !!! */
    /* FALSCH: while(fgets(line,sizeof(line),g)) */
    /* ALTERNATIVE: MAX als parameter mit geben */
    while(fgets(line,MAX,g))
    {
    xxxx(yyy);
    }

    return(0);
    }



  • danke für die mühe, ich hab noch ein anderen gefunden...

    feof()


Anmelden zum Antworten