| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Программа пропускает внутренний цикл |
| Автор: Ober 26.8.2011, 19:47 | ||
Добрый вечер, объясните пожалуйста, почему при выполнении внешнего цикла while несколько раз, внутренний цикл while выполняется не больше одного раза, а в остальных случаях просто пропускается. Вроде и указатель ставлю на начало файла, и поток очищаю а он все равно не выполняется. Предположим, что transaction.txt, base.txt, new.txt уже созданы и в первых двух файлах больше чем по 2 записи.
За ранее спасибо. |
| Автор: Estranged 26.8.2011, 23:48 |
| Сразу после baseFileIn.seekg( 0 ); написать streamoff offset = baseFileIn.tellg (); чисто ради шутки. |
| Автор: Ober 27.8.2011, 00:01 | ||
Честно говоря шутки не понял )) |
| Автор: Estranged 27.8.2011, 16:56 |
| Так узнаем текущую позицию чтения в файле base.txt. baseFileIn.seekg( 0 ); streamoff offset = baseFileIn.tellg (); baseFileIn >> abase >> b >> cbase; Кроме того, до цикла, который не выполняется, читаются данные. Вдруг уже конец файла? baseFileIn.seekg( 0 ); streamoff offset = baseFileIn.tellg (); <- здесь ожидаем 0 baseFileIn >> abase >> b >> cbase; streamoff offset2 = baseFileIn.tellg (); <- здесь что? Конца файла не достигли случайно? while( !baseFileIn.eof() )//пока не конец базового файла ... |
| Автор: vinick 27.8.2011, 18:01 |
| В строке 21 вы очищаете не тот поток. это опечатка на форуме или в коде так же? Если второе, то замените на baseFileIn.clear() |
| Автор: Ober 27.8.2011, 19:25 | ||
Большое спасибо вам за помощь, это была моя ошибка, я очищал не тот поток и поэтому в BaseFileIn оставался признак конца файла. |