Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Дима_Кирсанов
5 / 5 / 7
Регистрация: 08.10.2010
Сообщений: 227
#1

Почему при чтении файла последний символ выводится 2 раза? - C++

17.09.2016, 20:02. Просмотров 316. Ответов 2
Метки нет (Все метки)

если структура файла: 1\nEOF. То почему не выполняется условие

C++
1
2
3
4
if(Ch != '\n')
{
  cout.put(Ch);
}
и программа выводит в outstream: 11

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <fstream>
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
using std::ifstream;
using std::ofstream;
 
int main()
{
  char Ch;
  ifstream infile("file1.txt");
  while(infile)
  {
    infile.get(Ch);
    if(Ch != '\n')
    {
      cout.put(Ch);
    }
  }
  infile.close();
  cout << endl;
  return 0;
}
Добавлено через 6 минут
Или, может быть, я чего-то не понимаю и у файла другая структура, например: 1EOF. Но если так, то почему не выполняется:

C++
1
2
3
4
while(infile)
{
  ...
}
и чтение файла происходит два раза, вместо одного???
http://www.cyberforum.ru/cpp-beginners/thread950419.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2016, 20:02
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Почему при чтении файла последний символ выводится 2 раза? (C++):

Почему цикл с условием EOF читает последний символ 2 раза?
Данная программа читает двоичную строку и выводит длину самой продолжительной...

При чтении файла последний элемент повторяется дважды
появилась необходимость выучить работу с файлами за 9 часов #include...

вывести символы в следующем порядке: первй символ из входного файла, последний символ, второй символ, предпоследний смвл
Дан файл in.txt, содержащий текст. Требуется вывести в файл out.txt символы в...

Почему при чтении бинарного файла происходит экстренное завершение программы?
в Windows XP при чтение бинарного файла происходит екстренное завершение...

Считать последний символ файла. Записать символ в конец файла
Есть файл. Нужно сначала дописать в его конец один символ, а затем его считать....

2
nmcf
6238 / 5550 / 2525
Регистрация: 14.04.2014
Сообщений: 23,337
17.09.2016, 20:05 #2
EOF будет после первого неудачного чтения. Значит, надо проверять infile перед проверкой символа, а не в начале цикла.
0
nd2
2828 / 2398 / 1052
Регистрация: 29.01.2016
Сообщений: 8,022
17.09.2016, 20:31 #3
C++
1
2
3
4
5
6
7
  while(infile.get(Ch))
  {
    if(Ch != '\n')
    {
      cout.put(Ch);
    }
  }
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2016, 20:31
Привет! Вот еще темы с решениями:

Как отступить символ при чтении файла? Как перейти на следующую строку?
использую библиотеку fstream. у меня два вопроса: первый: как отступить...

Почему на экран выводится 5 элементов массива, а в файл записывается 1 элемент (последний)
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; #include &lt;fstream&gt;...

"Нарушение прав доступа при чтении по адресу" при чтении структур из бинарного файла
Пытаюсь разобраться со структурами в бинарных файлах. Допустим, есть массив...

Функция getc (FILE*) при первом вызве считывает НЕ ПЕРВЫЙ символ файла.Почему?
Друзья! Здравствуйте! Вот код. #include &lt;iostream&gt; using namespace std;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru