Добрый день!
У меня есть следующий код, для чтения файла:
#include <fstream>
using namespace std;
#define DWORD unsigned long
int main()
{
unsigned char rch;
fstream fBin;
fBin.open("binfile.txt", ios_base::in | ios_base::binary);
while (!fBin.eof())
fBin.read((char*)&rch, 1); //здесь происходит вторая операция чтения однобайтового
//файла, в результате которой rch == предидущему значению rch
}
Файл состоит из 1-го символа? Почему fBin.eof() == true только после того как совершил две операции чтения по одному символу? Насколько я понимаю, флаг EOF должен устанавливатся сразу после прочтения последнего символа файла, а не чтении файла размером + 1 символ.
Здравствуйте, morden, Вы писали:
Можно код чуть плдправить:
M>M>#include <fstream>
M>using namespace std;
M>#define DWORD unsigned long
M>int main()
M>{
M> unsigned char rch;
M> fstream fBin;
M> fBin.open("binfile.txt", ios_base::in | ios_base::binary);
M> while ( fBin.read((char*)&rch, 1) )
{
...
}
M>
M> //файла, в результате которой rch == предидущему значению rch
M>}
M>
Файл состоит из 1-го символа? Почему fBin.eof() == true только после того как совершил две операции чтения по одному символу? Насколько я понимаю, флаг EOF должен устанавливатся сразу после прочтения последнего символа файла, а не чтении файла размером + 1 символ.... << RSDN@Home 1.1.4 stable rev. 510>>