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

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

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

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

17.11.2009, 21:47. Просмотров 2844. Ответов 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++):

Не работает while (!***.eof() ! - C++
Здравствуйте, задание такое: Вводить с клавиатуры данные и записывать их в файл в виде Имя группа оценка Иванов ...

Не работает EOF (end-of-file) - C++
EOF (end-of-line) не работает в условии завершения цикла. Вместо него работает -1. Если ввести -1 то цикл прекрасно завершиться, но...

При использовании getline не работает eof - C++
while(!file.eof()) { getline(file,dv_tmp.name); file &gt;&gt;dv_tmp.profit &gt;&gt;dv_tmp.count_worker; mdv.push_back(dv_tmp); } ...

Прочитать символы из файла, используя eof() (программа работает не так, как ожидается) - C++
Здравствуйте, мне нужно прочитать символы из файла(желательно с пробелами). Использую eof(), но складывается впечатление, что он не...

\n \0 EOF - C++
Добрый вечер, возник такой вопрос: зачем мы заменяем символ конца строки на нуль символ в данном коде (удаление символов содержащихся в s2...

Int Eof - C++
Вот проблема есть массив int a заполнять его целыми числами последовательность завершается признаком конца ввода

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
M128K145
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
17.11.2009, 22:41 #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  [ТС] #3
а если у меня есть некий файл, с которым моя программа работает, но в начале мне нужно проверить, не пуст ли он, то мне, что же, нужно в него чего-то писать? оО
в случае если там уже что-то записано это чревато.
M128K145
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
17.11.2009, 23:22 #4
Цитата Сообщение от Лукас Посмотреть сообщение
то мне, что же, нужно в него чего-то писать?
Про запись в файл никто ничего не говорил, говорилось только про чтение из файла
Лукас
4 / 4 / 1
Регистрация: 17.11.2009
Сообщений: 32
17.11.2009, 23:36  [ТС] #5
оу. извините, скобки перепутал.
спасибо большое
(темы полагается удалять во избежание оффтопа?)
M128K145
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
17.11.2009, 23:52 #6
Лукас, теме полагается оставаться
Max
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 27
18.11.2009, 08:55 #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.
Почему так происходит? И можно ли это как-нить решить?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2009, 08:55
Привет! Вот еще темы с ответами:

EOF K&R - C++
Всем доброго времени суток. Изучаю Си по Дейтелам, а теперь попала в руки книга авторов языка. Интересно теперь будет параллельно по двум...

Getchar и putchar EOF - C++
Подскажите что за символ такой EOF? Чисто догадываясь это 0, но не работает. #include &lt;stdio.h&gt; int main() { int c; while((c...

Функция fclose() и EOF - C++
int fclose( FILE *stream); Возвращает 0, если все ОК и возращает EOF, если какая-нибудь ошибка. Функция имеет тип Int. Значит...

Почему не срабатывает EOF - C++
У меня стоит Visual Studio 2010 написал простенькую программу #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; int main() { int...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.11.2009, 08:55
Ответ Создать тему
Опции темы

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