0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 47
1

Считывание посимвольно файл

01.06.2014, 13:59. Показов 1430. Ответов 7
Метки нет (Все метки)

Нужно считать посимвольно файл, но когда начал реализовать, то запутался, мне в цикле надо иметь доступ к нынешнему символу, и доступ к следующему символу. И так до конца файла, к примеру:

a4=33 - он должен считывать так:

первая итерация:

a- нынешний символ | 4 -следующий
4 - нынешний символ | = - следующий
и т.д

вот моя реализация

C++
1
2
3
4
5
6
while (!fin.eof()) {
        char a; 
               fin.get(ch);
        fin.get(a);
        cout << " iter:" << ch <<"|"<<a<< endl;
}
НО, она выдает такое сообщение:
iter: a | 4
iter: = | 5
iter: = | 5

Почему 2 раза последняя строка, я не понял. Текст файла таков : a4=55
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.06.2014, 13:59
Ответы с готовыми решениями:

Считывание числа из текстовика посимвольно
в текстовом файле забито число(например 1368), нужно посимвольно его подсчитать и вывести на экран....

Считывание String посимвольно либо Char in Switch
Здравствуйте, суть такова: Нужно написать 3 числа (0-7), а дальше считать каждое число по...

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

Посимвольно считать текстовый файл, работа с файлом txt
как посимвольно считать текстовый файл, сформировать список входных символов, посчитав частоту...

7
5484 / 4879 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
01.06.2014, 15:52 2
Цитата Сообщение от oltar19 Посмотреть сообщение
Почему 2 раза последняя строка, я не понял.
C++
1
2
3
4
5
6
7
8
9
10
11
while (true) 
{
        char a; 
        fin.get(ch);
        if (fin.eof())
             break;
        fin.get(a);
        if (fin.eof())
             break;
        cout << " iter:" << ch <<"|"<<a<< endl;
}
Добавлено через 2 минуты
C++
1
2
3
4
5
char a, ch;
while (fin.get(ch) && fin.get(a)) 
{
        cout << " iter:" << ch <<"|"<<a<< endl;
}
0
0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 47
01.06.2014, 16:05  [ТС] 3
Нет, в данном случае он перепрыгивает за одну итерацию на две позиции, т.е выводит так:

iter: a | 3
iter = | 5

а должен:

iter: a | 3
iter: 3 | =
iter: = | 5

Может как то через си-шные указатели можно реализовать, подчеркну, что мне важно в цикле иметь доступ к элементу настоящему и следующему элементу, но приэтом цикл идет по каждому символу.

Что касается сишных указателей, я имел ввиду, типо того
FILE **fin
*fin - это текущий символ
*fin++ - а это указатель на следующий
0
5484 / 4879 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
01.06.2014, 16:22 4
Цитата Сообщение от oltar19 Посмотреть сообщение
Нет, в данном случае он перепрыгивает за одну итерацию на две позиции,
Я ответил на это:
Цитата Сообщение от oltar19 Посмотреть сообщение
Почему 2 раза последняя строка, я не понял.
Добавлено через 5 минут
C++
1
2
3
4
5
6
7
char ch;
while (fin.get(ch)) 
{
        cout << " iter:" << ch <<"|"
        if (fin.peek() != EOF) 
            cout << fin.peek() << endl;
}
0
0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 47
01.06.2014, 16:28  [ТС] 5
Ясно, а про организацию потока черзе си, с помощью указателей, можно реализовать или нет?
0
5484 / 4879 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
01.06.2014, 16:29 6
Цитата Сообщение от oltar19 Посмотреть сообщение
а про организацию потока черзе си, с помощью указателей, можно реализовать или нет?
Тут форум С++, а не Си.
0
Модератор
Эксперт по электронике
8644 / 6451 / 870
Регистрация: 14.02.2011
Сообщений: 22,522
01.06.2014, 16:33 7
Цитата Сообщение от oltar19 Посмотреть сообщение
что мне важно в цикле иметь доступ к элементу настоящему и следующему элементу,
Ты умеешь заглядывать в будущее?
следующий элемент еще не считан, программа про него ничего не знает
0
Эксперт PHP
3089 / 2578 / 1216
Регистрация: 14.05.2014
Сообщений: 7,200
Записей в блоге: 1
01.06.2014, 16:34 8
Цитата Сообщение от oltar19 Посмотреть сообщение
Почему 2 раза последняя строка, я не понял.
Может быть из-за того, что файл заканчивается переводом строки.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.06.2014, 16:34
Помогаю со студенческими работами здесь

Считать файл в переменную типа char, и работать посимвольно
считать файл в переменную типа char, а дальше с ней нужно работать посимвольно, так вот, как...

Файл: Считать из файла посимвольно текст и вывести его на экран. Объясните, как это работает.
Дали нам в вузе (1 курс) такой вот код, чтобы считать с файла посимвольно текст и вывести его //...

Считывание в файл
Всем привет. Сегодня столкнулся с проблемой. Программа делает 4 действия: рандомой забивает числа в...

Считывание и запись в файл
Короче пытаюсь считать из одного файла цифру и записать ее в другой файл На то что после // не...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru