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