В файле всего 3 строки:
nstructfile2
АБВ
4
Однако getline почему-то бесконечно читает файл и ничего не возвращает переменной spec[i].name даже на первой строке (которая в файле – вторая)
rd.open(fn + "2");
if (!rd) {
rd.close(); clr(red); printf("\nОшибка! Невзоможно открыть таблицу специальностей"); Sleep(3000); Cont();
}
rd >> automata;
if (strcmp(automata, "nstructfile2") != 0)
{
rd.close(); clr(крас); printf("\nОшибка! Таблица специальностей поверждена"); clr(); Cont(); switch (uchar OMG = Cont()) { case '1':goto rewrite_file; case '2': op = '0'; }
}
else {
for (i = 0; !rd.eof(); i++)
{
getline(rd, spec[i].name); rd >> spec[i].mes; n2++;
}
bar(3);
rd.close();
Почему так происходит и как это исправить?
Итак...
rd >> automata;
Считали словою В буфере - "\n"
.
Цикл, обрекающий на как минимум одно лишнее чтение, потому что eof
срабатывает только после попытки читать за концом файла... Откуда, ну откуда, какой препод вот такому учит?!
for (i = 0; !rd.eof(); i++)
{
Считали пустую строку из буфера - остаток "\n"
getline(rd, spec[i].name);
Пытаемся читать в, вероятно, int
(конечно, зачем этих отвечающих баловать, расписывать им все? и так догадаются, что я написал до этого места!) строку, которая не число
rd >> spec[i].mes;
Файл переходит в состояние fail
(в самом деле, не царское это дело - проверять, правильно ли все прочитано!) и все дальнейшие операции с ним просто возвращают ошибку. Но, как мы уже решили - проверять ошибки - унизительно для настоящего программиста...
Как исправить?
Прочесть это и это, и, работая с файлами (и не только с ними), проверять, все ли в порядке...
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как сделать так, чтобы камера не флипалась (поворачивалась) вместе с персонажем, но перемещалась за с ним?
Есть 3 UserControl, вложенных друг в другаДля старшего UserControl прописаны DependencyProperty - цвет элементов, которые будут задаваться в разметке и привязываться...
Делаю скрипт для перемещения персонажа по урокам в интернетеЗастрял на моменте прыжка
MVC CORE 21; У меня есть два проекта Web ( основной проект, в нём есть форум, блог