Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

fstream

8.2K
11 апреля 2007 года
user1
71 / / 16.03.2007
вот.
что-то не пойму:
почему класс ifstream неправильно воспринимает конец файла ??
функция eof() срабатывает где-то в его начале, а не в конце.
есть программка-пример:


#include "stdafx.h"
#include <fstream>
using namespace std;

void main()
{
ifstream infile("F:\\temp.txt");
char j;
char temp[1000];
int i=0;

while(1)
{
if(infile.eof())
break;
infile.getline(temp,1000);
cout<<temp<<endl;
i++;
};

infile.clear();
infile.close();
cout<<i<<endl;
};


и есть файл(в нем более 1000 строк) - http://webfile.ru/1371636
а i показывает только 222 !!
как это и почему ??
320
12 апреля 2007 года
m_Valery
1.0K / / 08.01.2007
Цитата: user1
вот.
что-то не пойму:
почему класс ifstream неправильно воспринимает конец файла
...
и есть файл(в нем более 1000 строк) - http://webfile.ru/1371636
а i показывает только 222 !!
как это и почему ??


Этот код нормально работает:) Любой тектовый файл больше 1000 строк
читает нормально.Может дело в файле.Я его не качал.

263
12 апреля 2007 года
koltaviy
816 / / 16.12.2004
Да, работающий код!
Только вот по корявому написан. К тому же он у тя одну лишнюю строку прочитает!!
 
Код:
..
while (  ! infile.getline( temp, sizeof(temp) ).eof()  )
{
         cout << temp << endl;
         ..
}
..

З.Ы.: твой файл тоже не качал!!
Согласен с m_Valery насчет возможности корявости файла - хотя в чем эта корявость может заключаться интересно, если он конец файла воспринимает!! ?
8.2K
13 апреля 2007 года
user1
71 / / 16.03.2007
шифрованный текстовый файл.....
263
13 апреля 2007 года
koltaviy
816 / / 16.12.2004
Цитата: user1
шифрованный текстовый файл.....


Цитата:

..
[FONT=MS Sans Serif]Существуют некоторые особые тонкости, связанные с файлами текстового режима, на которые следует обратить особое внимание и запомнить. Первая из них - символ EOF (26 в коде ASCII или Ctrl+Z) - представляет собой метку (символ) конца файла. В текстовом режиме, где встречается символ EOF, система C++ низкого уровня автоматически продвигается к концу файла; вы ничего не можете прочитать после специального символа. Это может вызвать проблемы, если такой специальный символ окажется в середине файла.[/FONT]
[FONT=MS Sans Serif]..[/FONT]


Делай выводы!!

563
14 апреля 2007 года
MrLinker
249 / / 17.09.2006
Открывай файл в бинарном режиме.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог