Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.67
Лукас
4 / 4 / 1
Регистрация: 17.11.2009
Сообщений: 32
#1

Не работает eof(). о__О - C++

17.11.2009, 21:47. Просмотров 2662. Ответов 6
Метки нет (Все метки)

в такой вот ситуации возвращает всегда ноль. даже в данном случае, когда на e: лежит чистый файл.

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include<conio.h>
#include<iostream.h>
#include<fstream.h>
 
main()
 {clrscr();
  int i; //char ch=' ';
  ifstream a("e:\\test.txt");
  i=a.eof();
  cout<<i;
  getch();
 }
в чем может быть проблема?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2009, 21:47     Не работает eof(). о__О
Посмотрите здесь:

C++ Int Eof
C++ Очистить поток от EOF
Печать значения EOF C++
C++ Getchar и putchar EOF
C++ Не работает EOF (end-of-file)
C++ EOF K&R
C++ \n \0 EOF
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт C++
8280 / 3499 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
17.11.2009, 22:41     Не работает eof(). о__О #2
а если переписать так?
C++
1
2
3
4
int i;
cout<<a.eof()<<'\n';
a>>i;
cout<<a.eof();
Возвращается значение true или false. Первый раз false потому что указатель установлен в нулевое положение, второй раз получаем true потому что считали что-то и достигли конца файла, т.е. наш указатель теперь указывает на следующий байт за последним байтом нашего файла, он и есть так называемый EOF, который определен как
C++
1
#define EOF -1
Лукас
4 / 4 / 1
Регистрация: 17.11.2009
Сообщений: 32
17.11.2009, 23:18  [ТС]     Не работает eof(). о__О #3
а если у меня есть некий файл, с которым моя программа работает, но в начале мне нужно проверить, не пуст ли он, то мне, что же, нужно в него чего-то писать? оО
в случае если там уже что-то записано это чревато.
M128K145
Эксперт C++
8280 / 3499 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
17.11.2009, 23:22     Не работает eof(). о__О #4
Цитата Сообщение от Лукас Посмотреть сообщение
то мне, что же, нужно в него чего-то писать?
Про запись в файл никто ничего не говорил, говорилось только про чтение из файла
Лукас
4 / 4 / 1
Регистрация: 17.11.2009
Сообщений: 32
17.11.2009, 23:36  [ТС]     Не работает eof(). о__О #5
оу. извините, скобки перепутал.
спасибо большое
(темы полагается удалять во избежание оффтопа?)
M128K145
Эксперт C++
8280 / 3499 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
17.11.2009, 23:52     Не работает eof(). о__О #6
Лукас, теме полагается оставаться
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2009, 08:55     Не работает eof(). о__О
Еще ссылки по теме:

При использовании getline не работает eof C++
C++ Ifstream и eof в нем
C++ Не работает while (!***.eof() !
C++ Конец файла EOF
Прочитать символы из файла, используя eof() (программа работает не так, как ожидается) C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Max
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 27
18.11.2009, 08:55     Не работает eof(). о__О #7
Добрый день. Вопрос по теме.
А что если eof==-1 определяется где-то посреди файла? Например картинки достаточно большие фиг дочитаешь до конца.
Код:

C
1
2
3
fr=fopen(file_name,"r");
 while (fread(&tmp,1,1,fr)!=0){
     fsize++;}
Такая же кстати фишка происходит, если код:

C
1
2
3
4
5
fr=fopen(file_name,"r");
if(fread(&tmp,1,1,fr)!=0)
 while (!feof(fr)){
         fread(&tmp,1,1,fr);
     fsize++;}
И вместо 24 кБ допустим, я получаю 52 байта. Т.е. fsize не 24576, а 52.
Почему так происходит? И можно ли это как-нить решить?
Yandex
Объявления
18.11.2009, 08:55     Не работает eof(). о__О
Ответ Создать тему
Опции темы

Текущее время: 09:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru