[Comm] [BUG] feof() и дублирование последней строки
php-coder
=?iso-8859-1?q?php-coder_=CE=C1_altlinux=2Eru?=
Вт Июн 7 17:37:36 MSD 2005
Доброго времени суток сообщество!
Вот заметил тут, что простейший примерчик на Сях работает очень
странно, и даже, прямо таки скажем, неожиданно. Дело в том, что
считывается лишняя строчка, т.е. последння строка файла по неведомой
мне причине считывается дважды.
[c0der на mycomp ~]$ cat test.c
#include <stdio.h>
int main()
{
char str[100];
FILE *fd;
fd = fopen("test.txt", "r");
while(! (feof(fd))) {
fscanf(fd, "%s", str);
printf("%s\n", str);
}
fclose(fd);
return 0;
}
[c0der на mycomp ~]$ cat test.txt
1
2
3
[c0der на mycomp ~]$ ./test
1
2
3
3
Объясните что происходит, пожалуйста.. :-)
Пока использую немного переделанную конструкцию:
...
fd = fopen("test.txt", "r");
fscanf(fd, "%s", str);
do {
printf("%s\n", str);
fscanf(fd, "%s", str);
}while(! (feof(fd)));
fclose(fd);
...
P.S. Проверил сегодня этот пример на Visual C++ 6.0 -- все работает
как и должно. Окончательно укоренился в мысли, что это бага. Если да,
то на какой пакет вешать?
Спасибо за внимание!
--
+ php-coder
+ php-coder[at]altlinux[dot]ru
Подробная информация о списке рассылки community