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