Форум программистов, компьютерный форум CyberForum.ru

Считывание из файла - C++

Восстановить пароль Регистрация
 
Ask
0 / 0 / 0
Регистрация: 20.10.2011
Сообщений: 16
14.11.2011, 21:06     Считывание из файла #1
Почему при считывании строк из файла циклом вида

C++
1
2
3
4
5
while (!feof(f))
{
fgets(line, MAX, f);
printf("%s\n", line);
}
если последняя строка пустая (то есть просто в конце файла нажали enter), она дублируется? как избежать этого?
У меня у самого следующие догадки: что когда маркер стоит на предпоследней строке, после считывания конец файла так и не достигается из-за enter'а, но и считать ничего тоже не удается => строка остается прежней, поэтому вывод дублируется на очередной итерации. Что-то вроде пустого символа?
У него есть вид какой-то? Как например у символа перехода на новую строку "\n"? Чтобы можно было задать условие, которое отсечет дублирование...
 Комментарий модератора 
Запрещено создавать темы с бессмысленными названиями вроде "Помогите!", "Вопрос" и т.п.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2011, 21:06     Считывание из файла
Посмотрите здесь:

Считывание с файла C++
C++ Считывание из файла в С++
C++ Считывание с файла !
C++ считывание из файла
считывание с файла... C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
emilen
10 / 10 / 0
Регистрация: 25.05.2010
Сообщений: 52
14.11.2011, 21:27     Считывание из файла #2
Если я правильно понимаю, то сначала выводиться '\n' который считался из файла, а потом еще из "%s\n"
Ask
0 / 0 / 0
Регистрация: 20.10.2011
Сообщений: 16
14.11.2011, 21:53  [ТС]     Считывание из файла #3
не, я немного не о том. Предпоследняя строка выводится повторно, если даже выводить вот так

C++
1
2
3
4
5
while (!feof(f))
{
fgets(line, MAX, f);
puts(line);
}
то есть через puts. Если последняя строка в файле пустая

Добавлено через 10 минут
если использовать условие цикла
C++
1
while (fgets(line, MAX, FInput) != NULL)
то все считывается нормально и не дублируется)
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
15.11.2011, 05:17     Считывание из файла #4
Цитата Сообщение от Ask
если использовать условие цикла
так и делай

ответ на вопрос: потому что, когда строка не может быть прочитана через fgets(), за вызовом fgets() всё равно идёт вывод
Ask
0 / 0 / 0
Регистрация: 20.10.2011
Сообщений: 16
15.11.2011, 21:39  [ТС]     Считывание из файла #5
сам не понял что-то сразу)
Yandex
Объявления
15.11.2011, 21:39     Считывание из файла
Ответ Создать тему
Опции темы

Текущее время: 20:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru