Столкнулся с такой проблемой, с начало приведу код
Метод записи в файл
char tmp[lenNameUser] = {"Администратор"};
ofstream fout(m_strNameFileUsers, ios::out | ios::binary);
if (!fout.is_open()) {
return false;
}
userLogin = userPass = "Admin";
fout.write(tmp, lenNameUser);
fout.write(userLogin, lenUserLogin);
fout.write(userPass, lenUserPass);
fout.write((char*) true, 1);
fout.flush();
fout.close();
Метод считывания из файла
// Ищем пользователя с именем (login) strLog
ifstream fin(m_strNameFileUsers, ios::in | ios::binary);
while (!fin.eof()) {
// считываем
fin.read(tmp, lenNameUser);
fin.read(login, lenUserLogin);
fin.read(pass, lenUserPass);
fin.read((char*) isAdmin, 1);
if (fin.eof())
break;
// copy to objects of class CString
userLogin = login;
userPass = pass;
// Удаляем пробелы справа
userLogin.TrimRight(' ');
userPass.TrimRight(' ');
// Проверяем на существование
if (strLog == userLogin && strPass == userPass) {
isFind = true;
break;
}
}
fin.close();
Вопрос такой, почему если последний считанный символ это '\0', то дальше при считывании ниче не читается, ведь это же не конец файла (насколько я знаю), да и eof не реагирует.