Problem s feof() v C
Tomas Rollbach
troll na logix.cz
Pátek Červen 23 12:02:40 CEST 2000
DD,
mam problem s psanim programu v C - pravdepodobne je to nejaka kravinka,
nebo jsem neco spatne pochopil. Mam nasledujici prg:
*** tst.c
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *f;
char buf[1000];
f=fopen("tst.conf", "r");
while(!feof(f))
{
if(fgets(buf, 1000, f) != buf)
{
printf("EOF\n");
exit(1);
}
printf("%s", buf);
}
return 0;
}
*** tst.conf
a
b
c
***
Podle meho nazoru by to melo precist "a\n", pak "b\n", pak "c\n" a pak by
ten while mel skoncit. Bohuzel i po precteni "c\n" to pokracuje ve cteni
souboru, i kdyz uz je na konci. Ten feof(f) to proste nepozna nebo ja
nevim, kde je chyba. Kdyz tam nedam ten exit(1), tak to jede furt dokola.
Kdyz ale v tst.conf neni za poslednim radkem '\n', tak ten feof skonci tak
jak bych si predstavoval.
Delam neco blbe, nebo jsem neco spatne pochopil, nebo kde je chyba?
Mam egcs-2.91.66, glibc-2.1.1, kernel 2.4.0-test1-ac21, ale stejne
"podivne" se to chova i na OpenBSD...
Diky za pripadne rady
-troll
Další informace o konferenci Linux