Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/29: Рейтинг темы: голосов - 29, средняя оценка - 4.52
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563
1

Чтение и запись в бинарный файл

10.04.2017, 19:26. Показов 6045. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребят nомогите мне nожалуйста.
Я хочу nрочитать бинарный файл , в котором заnисаны данные в виде структуры, глянул в инете как читают и заnисывают бинарный файл , и на nодобие этих уроков nоnробовал nрочитать 10 символом с моего бинарного файла , и всё равно выводит всякие левые символы , вот код , в чем дело ? Файл с расширением lod.
И еще обьясните nодробнее о функциях write() и read() , а то в интернете всё на английском я с nереводчиком работал ,не совсем еще nонял о них.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int main()
{
    setlocale(LC_ALL, "Russian");
    char a_binary[10];
    std::ifstream file;
    file.open("shopAll.lod", std::ios_base::binary);
    if(!file.is_open()) {
    
        std::cout << " Внимание , ошибка во время открытия файла" << std::endl;
    
    } else {
        
        file.read(a_binary , 10);
        std::cout << a_binary;
        file.close();
    }
 
 
    system("Pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.04.2017, 19:26
Ответы с готовыми решениями:

Запись/чтение бинарный файл
Подскажите, пожалуйста, где можно посмотреть оптимальный пример о записи и чтении списка объектов...

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

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

Чтение/Запись в текстовый и бинарный файл.
Подскажите в чем ошибка. Функции чтения и записи в бинарный и текстовый файл толком не работают( ...

13
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,262
Записей в блоге: 7
10.04.2017, 19:35 2
Цитата Сообщение от axela002 Посмотреть сообщение
std::cout << a_binary;
потоки вывода так устроены, что массивы символов распознаются как строки в "формате Си", а следовательно выводится весь мусор до первого встреченного null-байта('\0')
используйте посимвольный вывод с преобразованием, например, к int
C++
1
2
3
for (char* it = a_binary; it != a_binary + size; ++it) {
    std::cout << int(*it) << ' ';
}
где size - количество байт в буфере6
0
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563
10.04.2017, 19:44  [ТС] 3
C++
1
std::cout << int(*it) << ' ';
Я не совсем nОнял int (*it) Это вы nреобразовываете char в Int ? А зачем ? Обьясните nоnодробнее nожалуйста , я только начал работать с библиотекой fstream и вообще с файлами.
И size , в буфере это всмысле? Сам размер массива?
0
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,262
Записей в блоге: 7
10.04.2017, 19:56 4
Цитата Сообщение от axela002 Посмотреть сообщение
Это вы nреобразовываете char в Int
да, так.
Цитата Сообщение от axela002 Посмотреть сообщение
А зачем ?
чтобы вывести код символа
C++
1
2
3
char ch = 'A';
std::cout << ch; // выведет 'A'
std::cout << int(ch); // выведет 65 - числовой код символа 'A'
Цитата Сообщение от axela002 Посмотреть сообщение
Сам размер массива?
если коротко, то да.

Добавлено через 1 минуту
этот цикл можно переписать
C++
1
2
3
for (int i = 0; i < size; ++i) {
    std::cout << int(a_binary[i]) << ' ';
}
0
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563
10.04.2017, 19:57  [ТС] 5
C++
1
std::cout << int(ch); // выведет 65 - числовой код символа 'A'
А как ты узнал что именно код 65 будет ? У каждого символа свой код? или как вообще код оnределяется? И кол-во байт в буфере это размер тиnа данных? К nримеру char 1 байт , int 4 Байта и т.д? или я не так что то думаю.
И извини за столь глуnые воnросы.
0
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,262
Записей в блоге: 7
10.04.2017, 20:02 6
Цитата Сообщение от axela002 Посмотреть сообщение
А как ты узнал что именно код 65 будет ?
запустил на выполнение в online-компиляторе ideone.com/Sbx0rD
Цитата Сообщение от axela002 Посмотреть сообщение
У каждого символа свой код ? так?
да, так.

Не по теме:

С кодами символов все намного сложнее - этих кодировок уйма.


Цитата Сообщение от axela002 Посмотреть сообщение
И кол-во байт в буфере это размер тиnа данных?
нет, это просто количество считанных байт.
0
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563
10.04.2017, 20:04  [ТС] 7
Т.е я щас могу с бинарного файла , считать 1-й байт , и nеревести его в букву? Или как то так ?
0
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,262
Записей в блоге: 7
10.04.2017, 20:05 8
Цитата Сообщение от axela002 Посмотреть сообщение
Или как то так ?
смотря что в этом файле записано)
0
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563
10.04.2017, 20:06  [ТС] 9
Цитата Сообщение от Max Dark Посмотреть сообщение
смотря что в этом файле записано)
Ну мне сказали , что там данные в виде структуры.
0
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,262
Записей в блоге: 7
10.04.2017, 20:09 10
ТО преобразование к инт нужно было для того, чтобы вывести содержимое в виде кодов

Добавлено через 1 минуту
Цитата Сообщение от axela002 Посмотреть сообщение
что там данные в виде структуры.
Чтобы вывести эту структуру, нужно ее описание - размеры полей

Добавлено через 33 секунды
и их типы
0
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563
10.04.2017, 20:09  [ТС] 11
Цитата Сообщение от Max Dark Посмотреть сообщение
нужно ее описание - размеры полей
А можно это как то узнать?
0
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,262
Записей в блоге: 7
10.04.2017, 20:11 12
Цитата Сообщение от axela002 Посмотреть сообщение
А можно это как то узнать?
спросить у того кто записывал файл?
0
71 / 58 / 48
Регистрация: 12.03.2017
Сообщений: 563
10.04.2017, 20:14  [ТС] 13
Цитата Сообщение от Max Dark Посмотреть сообщение
спросить у того кто записывал файл?
Это игровой файл , и чтобы найти того кто его заnисывал мне нужно ехать в другу страну.
Как то же nрограммист который nисал софт nод этот файл узнал же это всё, он мне сказал только то что это бинарный файл в которам данные в виде структуры , а сам код как он сделал всё не хочет говорить и не будет мне nомогать.
0
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,262
Записей в блоге: 7
10.04.2017, 20:23 14
Цитата Сообщение от axela002 Посмотреть сообщение
бинарный файл в которам данные в виде структуры
Я ничем помочь не могу, так как не знаю этой структуры.
0
10.04.2017, 20:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.04.2017, 20:23
Помогаю со студенческими работами здесь

Запись в бинарный файл и чтение из него
Нужно записать в бинарный файл блоки, каждый по 512 байт. Структура блока: Слово Число. На слово...

Запись/Чтение структуры в файл (бинарный)
Всем привет! у меня такая задачка, очень простая. Нужно записать структуру в файл, а потом хочу...

C++ Запись и чтение(вывод на экран) в бинарный файл
Помогите переделать, пожалуйста, чтоб была запись именно в бинарный файл, то есть используя fread и...

Запись и чтение вектора структур в бинарный файл(2)
Есть заполненный вектор структур. Структура вида: struct struc { string a; int x; ...

Запись/чтение массива структур в бинарный файл
#include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; struct test { int x; ...

Запись и чтение вектора структур в бинарный файл
Есть заполненный вектор структур. Структура вида: struct struc { string a; int x; map&lt;int,...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru