Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Дмиттрий
0 / 0 / 0
Регистрация: 03.12.2015
Сообщений: 53
#1

Двоичные (бинарные ) файлы С++ - C++

22.04.2017, 21:38. Просмотров 190. Ответов 12
Метки нет (Все метки)

Помогите, пожалуйста, переделать эту же программу (она рабочая) только для двоичного (бинарного ) файла
Буду очень признателен за помощь.
Большое спасибо, тем кто поможет.
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include<iostream>
#include <fstream>
#include <algorithm>
#include <string>
using namespace std;
struct students
{
    char fam[100];
    char name[50];
    char ot[100];
    char pol[50];
    char fa[20];
    char curs[10];
    char grup[10];
    char gor[50];
    int bal;
    int bal1;
    int bal2;
    char *metka;
};
int main()
{
    setlocale(LC_ALL, "RUS");
    const int n = 5;
    students stud[n];
    ifstream fin("1.txt");
    ofstream fout("2.dat");
    
 
    
        
    if (fin)
    {
        for (int i = 0; i < n; ++i)
        {
            fin >> stud[i].fam >> stud[i].name >> stud[i].ot >> stud[i].pol >> stud[i].fa >> stud[i].curs >> stud[i].grup >> stud[i].gor >> stud[i].bal >> stud[i].bal1 >> stud[i].bal2;
            cout << stud[i].fam << "\t" << stud[i].name << "\t" << stud[i].ot << "\t" << stud[i].pol << "\t" << stud[i].fa << "\t" << stud[i].curs << "\t" << stud[i].grup << "\t" << stud[i].gor << "\t" << stud[i].bal << " " << stud[i].bal1 << " " << stud[i].bal2 << " " << endl;
        }
        fin.close();
    }
    else
        cout << "Не удалось открыть файл" << endl;
 
    cout << "Отформатированный список\n" << endl;
        
    for (int i = 0; i < n; ++i)
        if (stud[i].pol && (stud[i].bal == 2 || stud[i].pol && stud[i].bal1 == 2 || stud[i].pol && stud[i].bal2 == 2))
        {
            stud[i].metka = "Студент имеет задолжность";
            cout << stud[i].fam << "\t" << stud[i].name << "\t" << stud[i].ot << "\t" << stud[i].pol << "\t" << stud[i].fa << "\t" << stud[i].curs << "\t" << stud[i].grup << "\t" << stud[i].gor << "\t" << stud[i].bal << " " << stud[i].bal1 << " " << stud[i].bal2 << " " << stud[i].metka << endl;
        }
        else
        {
            cout << stud[i].fam << "\t" << stud[i].name << "\t" << stud[i].ot << "\t" << stud[i].pol << "\t" << stud[i].fa << "\t" << stud[i].curs << "\t" << stud[i].grup << "\t" << stud[i].gor << "\t" << stud[i].bal << " " << stud[i].bal1 << " " << stud[i].bal2 << " " << endl;
        }
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2017, 21:38
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Двоичные (бинарные ) файлы С++ (C++):

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

Двоичные файлы - C++
Здравствуйте. Кому не сложно, помогите, пожалуйста, решить задачу. Не забуду сказать &quot;спасибо&quot;. &quot;Для заданного двоичного файла...

Двоичные файлы - C++
У меня есть код программы работающий с текстовыми файлами, #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cstdlib&gt; #include...

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

Двоичные файлы - C++
Работа с двоичными файлами. Создать файл, состоящий из n вещественных чисел. Вывести на экран все числа данного файла с нечетными...

Задача на двоичные файлы! - C++
В первом двоичном файле находится информация о группе владельцев автомобилей:фамилия, имя, пол, год рождения, годовой доход, марка авто. Во...

12
nd2
2820 / 2390 / 851
Регистрация: 29.01.2016
Сообщений: 8,001
22.04.2017, 21:51 #2
Цитата Сообщение от Дмиттрий Посмотреть сообщение
C++
1
char *metka;
Зачем здесь указатель, который всё усложняет?
0
Дмиттрий
0 / 0 / 0
Регистрация: 03.12.2015
Сообщений: 53
22.04.2017, 22:54  [ТС] #3
Я только начинаю программировать, еще много не знаю. Возможно, он там и не нужен. Почему он там все усложняет ?
Не могли бы вы мне помочь в переделывании кода для бинарного файла.
0
nd2
2820 / 2390 / 851
Регистрация: 29.01.2016
Сообщений: 8,001
22.04.2017, 23:09 #4
Цитата Сообщение от Дмиттрий Посмотреть сообщение
Почему он там все усложняет ?
В файл что будешь записывать? Указатель (адрес)? Указатель на что?
Везде, в структуре, под строки массивы, тут указатель. Зачем?

Добавлено через 7 минут
Цитата Сообщение от Дмиттрий Посмотреть сообщение
Не могли бы вы мне помочь в переделывании кода для бинарного файла.
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
#pragma pack(push,1)
struct students
{
    char fam[100];
    char name[50];
    char ot[100];
    char pol[50];
    char fa[20];
    char curs[10];
    char grup[10];
    char gor[50];
    int bal;
    int bal1;
    int bal2;
    char metka[50];
};
#pragma pack(pop)
//...
 
    ofstream fout("2.dat", ios::binary);
    students obj;
    // заполняешь объект структуры
    
    fout.write((const char*)&obj, sizeof(obj)); // бинарная запись объекта структуры в файл.
Для бинарного чтения, структур из файла, используешь read():
http://www.cplusplus.com/reference/istream/istream/read/
1
Дмиттрий
0 / 0 / 0
Регистрация: 03.12.2015
Сообщений: 53
22.04.2017, 23:15  [ТС] #5
Что вы имели ввиду под заполнением структуры? Подскажите, пожалуйста, как вижуал студио создать файл с разрешением *.dat
0
nd2
2820 / 2390 / 851
Регистрация: 29.01.2016
Сообщений: 8,001
22.04.2017, 23:22 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Дмиттрий Посмотреть сообщение
как вижуал студио создать файл с разрешением *.dat
Так:
Цитата Сообщение от nd2 Посмотреть сообщение
C++
1
ofstream fout("2.dat", ios::binary);
Цитата Сообщение от Дмиттрий Посмотреть сообщение
Что вы имели ввиду под заполнением структуры?
Вводить с консоли данные в поля объекта. Или откуда собираешься данные по студентам брать? Если из текстового файла, то - первый цикл, в твоём коде.
1
Дмиттрий
0 / 0 / 0
Регистрация: 03.12.2015
Сообщений: 53
22.04.2017, 23:23  [ТС] #7
Из ранее созданного бинарного файла. С него нужно считать структуру отформатировать и вывести на консоль. Тоже самое, как у меня с текстовым фалом сделан код. Только теперь нужно переделать для двоичного.
0
nd2
2820 / 2390 / 851
Регистрация: 29.01.2016
Сообщений: 8,001
22.04.2017, 23:32 #8
Цитата Сообщение от Дмиттрий Посмотреть сообщение
Из ранее созданного бинарного файла.
И кто (и как) его создавал?
0
Дмиттрий
0 / 0 / 0
Регистрация: 03.12.2015
Сообщений: 53
22.04.2017, 23:43  [ТС] #9
Мне необходимо заранее создать ( внести в него необходимую информацию).
0
nd2
2820 / 2390 / 851
Регистрация: 29.01.2016
Сообщений: 8,001
22.04.2017, 23:46 #10
Цитата Сообщение от Дмиттрий Посмотреть сообщение
Мне необходимо заранее создать ( внести в него необходимую информацию).
Создавай:
Цитата Сообщение от nd2 Посмотреть сообщение
Так:
Вноси:
Цитата Сообщение от nd2 Посмотреть сообщение
Вводить с консоли данные в поля объекта.
Цитата Сообщение от nd2 Посмотреть сообщение
C++
1
2
... // заполняешь объект структуры 
fout.write((const char*)&obj, sizeof(obj)); // бинарная запись объекта структуры в файл.
Вопрос в чём?
0
Дмиттрий
0 / 0 / 0
Регистрация: 03.12.2015
Сообщений: 53
23.04.2017, 00:06  [ТС] #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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include<iostream>
#include <fstream>
#include <algorithm>
#include <string>
#pragma pack(pop)
 
using namespace std;
struct students
{
    char fam[100];
    char name[50];
    char ot[100];
    char pol[50];
    char fa[20];
    char curs[10];
    char grup[10];
    char gor[50];
    int bal;
    int bal1;
    int bal2;
    char metka[50];
};
int main()
{
    setlocale(LC_ALL, "RUS");
    const int n = 5;
    students stud[n];
    fin.open("2.dat", *ios_base::binary);
 
    if (fin)
    {
        for*(*int*i = 0; *i<n; *i++*)
        {
            fout.read((const char*)&obj, sizeof(obj)); **
                cout << stud[i].fam << "\t" << stud[i].name << "\t" << stud[i].ot << "\t" << stud[i].pol << "\t" << stud[i].fa << "\t" << stud[i].curs << "\t" << stud[i].grup << "\t" << stud[i].gor << "\t" << stud[i].bal << " " << stud[i].bal1 << " " << stud[i].bal2 << " " << endl;
        }
        fin.close();
    }
    else
        cout << "Не удалось открыть файл" << endl;
 
    cout << "Отформатированный список\n" << endl;
 
    for (int i = 0; i < n; ++i)
        if (stud[i].pol && (stud[i].bal == 2 || stud[i].pol && stud[i].bal1 == 2 || stud[i].pol && stud[i].bal2 == 2))
        {
            stud[i].metka = "Студент имеет задолжность";
            cout << stud[i].fam << "\t" << stud[i].name << "\t" << stud[i].ot << "\t" << stud[i].pol << "\t" << stud[i].fa << "\t" << stud[i].curs << "\t" << stud[i].grup << "\t" << stud[i].gor << "\t" << stud[i].bal << " " << stud[i].bal1 << " " << stud[i].bal2 << " " << stud[i].metka << endl;
        }
        else
        {
            cout << stud[i].fam << "\t" << stud[i].name << "\t" << stud[i].ot << "\t" << stud[i].pol << "\t" << stud[i].fa << "\t" << stud[i].curs << "\t" << stud[i].grup << "\t" << stud[i].gor << "\t" << stud[i].bal << " " << stud[i].bal1 << " " << stud[i].bal2 << " " << endl;
        }
}
0
nd2
2820 / 2390 / 851
Регистрация: 29.01.2016
Сообщений: 8,001
23.04.2017, 00:18 #12
Цитата Сообщение от Дмиттрий Посмотреть сообщение
вводил информацию вручную в сам файл, а не с консоли
Это как может быть? В текстовом редакторе вводил? В бинарный файл?

Добавлено через 5 минут
Дмиттрий, я тебе рекомендую вернуться к 4 посту.
0
Дмиттрий
0 / 0 / 0
Регистрация: 03.12.2015
Сообщений: 53
23.04.2017, 00:19  [ТС] #13
да!
я там строку пропустил "students obj;"
А write заменил на read, потому что считываю информацию из файла
0
23.04.2017, 00:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2017, 00:19
Привет! Вот еще темы с ответами:

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

не могли бы вы проверить задачу про двоичные файлы? - C++
Всем здравствуйте. наверно немного странная просьба: проверьте на правильность задачку &quot;вывод числа из двоичного файла&quot;, просто сомневаюсь...

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

бинарные файлы - C++
доброго времени суток. очень нужна помощь по нескоьким задачам. именно помощь, а не решение за меня) спасибо, если кто откликнется. ...


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

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

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