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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.76
smertnik
1 / 1 / 0
Регистрация: 06.08.2008
Сообщений: 55
#1

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

07.08.2008, 18:39. Просмотров 3523. Ответов 11
Метки нет (Все метки)

у меня такая проблема: считываю данные из файла открытого fopen для чтения, символы записываются в символьный массив, как только считывание доходит до символа 'стрелочка вправо', если я не ошибаюсь 26 символ таблицы ASCII, дальнейшее считывание прекращается подскажите пожалуйста как это можно обойти, если этот символ не будет считан в массив это ничего страшного! заранее спасибо!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2008, 18:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Считывание данных из файла (C++):

Считывание данных с файла - C++
Здравствуйте, помогите пожалуйста, программа не может прочитать данные из файла и я не знаю почему, вот код (dev-c++) if (*c==13) ...

Считывание данных из файла - C++
Нужно реализовать вывод данных структуры из файла.. Задание: Заполнение футбольных команд и вывод их на экран. Вводим: название...

Считывание данных из файла - C++
Всем здравствуйте... вообщем создан пользовательский класс пассажир class Passenger: public Human { private: string...

Считывание данных из файла - C++
Всем привет, возник вопрос. Нужно считывать из .txt файла координаты точек в массив, размерность которого . Но т.к числа разделены "," ,...

Считывание данных из файла - C++
почему не првильно работает считывание из файла? #include <iostream.h> #include <conio.h> #include <malloc.h> #include...

Считывание данных из файла - C++
не могу считать данные из файла На вход программы подаются 365 строк, которые содержат информацию о среднесуточной температуре всех дней...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
07.08.2008, 18:52 #2
Попробуйте открывать файл не как текстовый,а как двоичный.
Код
 fopen("filename","rb" ) ;
smertnik
1 / 1 / 0
Регистрация: 06.08.2008
Сообщений: 55
07.08.2008, 19:17  [ТС] #3
он тогда его откроет как нолики и единички???
Spo1ler
292 / 52 / 3
Регистрация: 22.05.2008
Сообщений: 788
07.08.2008, 19:18 #4
или
Код
 fstream f(filename, ios::binary | ios::in | ios::out);
smertnik
1 / 1 / 0
Регистрация: 06.08.2008
Сообщений: 55
07.08.2008, 19:21  [ТС] #5
так я сначала делал, в смысле таким способом файл открывал, но чет через fopen мне показалось проще работать!!!
в переменную посимвольно все вбивается через цикл, а не потоком!!! потоком он как-то криво к новым строкам относился!!!
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
07.08.2008, 19:33 #6
Я вижу,вы не очень понимаете,что творится. Попробую объяснить.

он не начнет разговаривать с вами "ноликами" и "единичками".
Вы сможете считывать информацию(как минимум по байту за раз),
и интерпретировать ее как хотите. В случае с текстовыми файлами,
полученная информация частично интерпретируется за вас. Поэтому ввод может закончиться раньше,чем нужно.

Запомните : минимальная адресуемая ячейка памяти - байт. Если вас интересует каждый бит - есть побитовые операции,можете прочитать про них статью(гугл + яндекс). Но сначала вы получите байт,который будете анализировать. Так есть. Сами подумайте,чтобы прочитать файл по одному биту,функции ввода придется 8 раз считывать один байт,поскольку меньше нельзя. Да еще придется,кроме хранения положение в файле, запоминать номер считываемого бита. Себя такой подход не оправдывает.

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

Добавлено через 7 минут
Добавлю еще,для полноты картины.
Тип char фактически представляет собой байт. Заодно он может интерпретироваться как символ функциями ввода-вывода. Но байт есть байт,и вы можете делать с ним что хотите. Узнать каждый бит,складывать и вычитать..
Если вы откываете файл как текстовый,с параметром "r" или "rt", функции
ввода интерпретируют этот байт как символ. Если вы используете
параметр "rb", в этот байт запишется байт,записанный в файле. Без всяких посредников.
smertnik
1 / 1 / 0
Регистрация: 06.08.2008
Сообщений: 55
07.08.2008, 19:35  [ТС] #7
я понимаю!!! просто думал вдруг он сразу преобразовывать будет!!! вобщем не суть!!! если поставить rb то он не должен прерывать ввод в переменную!?
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
07.08.2008, 19:42 #8
А ты проверь. Эксперементировать - это приятно и полезно.Не буду лишать тебя этого удовольствия
smertnik
1 / 1 / 0
Регистрация: 06.08.2008
Сообщений: 55
07.08.2008, 20:18  [ТС] #9
так я же так и делаю!!! просто это все на работе!!! там нета нет!!! а домой коды брать нельзя!!! потому там маюсь а тут спрашиваю!!! )) просто все, программу сделал!!! выполняет то что от нее требуется, но попался файл с таким символом!!! в итоге вместо выходных результатов получилась фига с маслом!!!
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
07.08.2008, 20:34 #10
Цитата Сообщение от smertnik Посмотреть сообщение
если поставить rb
....
Цитата Сообщение от smertnik Посмотреть сообщение
так я же так и делаю
Эти строчки не сочитаются. "Если" - значит,вы не делаете НЕ так.


Цитата Сообщение от smertnik Посмотреть сообщение
это все на работе!!! там нета нет!!! а домой коды брать нельзя!!!
Чтобы проверить,в каком случае программа прочитает символ 26,мне пришлось написать целых 18 строчек кода.Хотя хватило бы 8. Рассмотрел три варианта считывания. Почему бы вам не сделать то же самое? особенно если это ваша работа?
smertnik
1 / 1 / 0
Регистрация: 06.08.2008
Сообщений: 55
07.08.2008, 21:03  [ТС] #11
так я же так и делаю относилось к эксперементированию!!! а на счет почему бы самому не подумать не так силен я в си!!! диплом защитил, программу написал, а в некоторых вопросах олень полный!!! вот потому за помощью и обращаюсь!!! плюс так получилось что переехал и книг вобще неосталось!!! ниодной!!! а с электронными сидеть очень непривычно!!! плюс чтоб в них ориентирвоаться хорошо их нужно сначала прочитать!!! а на это времени нет!!!
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
07.08.2008, 21:18 #12
то,что не силен - дело поправимое)
Мой тебе совет - разбирайся,пиши,думай - по возможности сам.Тогда будешь силен Но если что - форум тут Тему закрываю, у меня работает,вопрос считаю решенным.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2008, 21:18
Привет! Вот еще темы с ответами:

Считывание данных из файла - C++
Помогите дописать програмку, которая считывает строки из 2 файлов, в которых записаны числа. Строку нужно считывать как массив целых чисел....

Считывание данных из файла - C++
Есть файл в котором содержится число 145. Мне нужно считать из файла это число без числа 5, то есть все числа до числа 5. Помогите.

считывание данных из файла в C++ - C++
В файле находиться следующяя информация: Name AIXTRON HANKORE_ENVM_TECH BOIRON 01.01.2009 4.78 0.039 17.34 ...

Считывание данных из файла - C++
char y; ifstream fin; fin.open("maps1.txt"); fin >> y; fin.close(); cout << y; Почему-то не работает следующий код. В...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.08.2008, 21:18
Закрытая тема Создать тему
Опции темы

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