С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 25.03.2019
Сообщений: 27
1

Кривая запись в файл

15.05.2019, 04:32. Показов 402. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написать программу записи в файл и чтения из файла элементов массива структур для регистрации автомашин с полями:
марка машины;
год выпуска;
цвет;
номер.
Программа работает, но при записи в файл добавляет кучу M, при этом при выводе файла в консоль там он их не учитывает. Как можно это исправить?
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include <iostream>
#include <string>
using namespace std;
#pragma warning (disable: 4996)
struct AUTOCAR
{
    char car_brand[15];
    int year_of_issue;
    char color_car[20];
    char number_of_car[10];
};
int save(const char * filename, struct AUTOCAR *st, int n);
int load(const char * filename);
int main() {
    const char * filename = "autocar.txt";
    int const MAX = 2; //кол-во экземпляров структуры//
    AUTOCAR regist[MAX];
    for (int i = 0; i < MAX; ++i)
    {
        cout << "Enter car brand :" << endl;
        cin >> regist[i].car_brand;
        cout << "Enter year of issue :" << endl;
        cin >> regist[i].year_of_issue;
        cout << "Enter color car :" << endl;
        cin >> regist[i].color_car;
        cout << "Enter number of car :" << endl;
        cin >> regist[i].number_of_car;
    }
    int n = sizeof(regist) / sizeof(regist[0]);
 
    save(filename, regist, n);
    load(filename);
    return 0;
}
 
// запись в файл массива структур
int save(const char * filename, struct AUTOCAR * st, int n)
{
    FILE * fp;
    char *c;
 
    // число записываемых байтов
    int size = n * sizeof(AUTOCAR);
 
    if ((fp = fopen(filename, "wb")) == NULL)
    {
        perror("Error occured while opening file");
        return 1;
    }
    // записываем количество структур
    c = (char *)&n;
    for (int i = 0; i < sizeof(int); i++)
    {
        putc(*c++, fp);
    }
 
    // посимвольно записываем в файл все структуры
    c = (char *)st;
    for (int i = 0; i < size; i++)
    {
        putc(*c, fp);
        c++;
    }
    fclose(fp);
    return 0;
}
 
// загрузка из файла массива структур
int load(const char * filename)
{
    FILE * fp;
    char *c;
    int m = sizeof(int);
    int n, i;
 
    // выделяем память для количества данных
    int *pti = (int *)malloc(m);
 
    if ((fp = fopen(filename, "r")) == NULL)
    {
        perror("Error occured while opening file");
        return 1;
    }
    // считываем количество структур
    c = (char *)pti;
    while (m > 0)
    {
        i = getc(fp);
        if (i == EOF) break;
        *c = i;
        c++;
        m--;
    }
    //получаем число элементов
    n = *pti;
 
    // выделяем память для считанного массива структур
    AUTOCAR * ptr = (AUTOCAR *) malloc(n * sizeof(AUTOCAR));
    c = (char *)ptr;
    // после записи считываем посимвольно из файла
    while ((i = getc(fp)) != EOF)
    {
        *c = i;
        c++;
    }
    // перебор загруженных элементов и вывод на консоль
    printf("\n%d people in the file stored\n\n", n);
 
    for (int k = 0; k < n; k++)
    {
        printf("%-5d %-20s %5d %5s %5s %5s\n", k + 1, (ptr + k)->car_brand, (ptr + k)->year_of_issue, (ptr + k)->color_car,(ptr + k)->number_of_car);
    }
 
    free(pti);
    free(ptr);
    fclose(fp);
    return 0;
}
Пример работы программы и вывода:
Кликните здесь для просмотра всего текста
https://prnt.sc/noo2p7
Кликните здесь для просмотра всего текста
http://************/noo2tc
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.05.2019, 04:32
Ответы с готовыми решениями:

Кривая Безье и DXF-файл
Здравствуйте! В DXF-файле (AutoCAD) для постороения кривой Безье хранятся координаты узлов и...

Кривая Коха, кривая Серпинского
Добрый вечер. Помогите пожалуйста. Очень срочно нужна готовая программа кривой Коха и кривой...

Запись в файл - проверить, не идет ли в него запись, чтобы не генерировалось исключение
Доброе время суток! Вот такой пример: Imports System Imports System.IO Module Module1 ...

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

0
15.05.2019, 04:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2019, 04:32
Помогаю со студенческими работами здесь

Ввод с клавиатуры и запись в файл, чтение из файла и запись в массив, вывод из массива на экран
1.Ввод с клавиатуры и запись в файл, чтение из файла и запись в массив, вывод из массива на экран...

Запись строки в массив, сортировка, удаление и запись в файл
Нужна помощь. Из edit box к нам приходят строки мы их фильтруем. нужно строки записать в массив,...

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

Запись чисел из файла 1, и запись в файл 2 в отсортированном виде
Задание: Есть файл 1, в нем находятся числа, нужно их отсортировать по возрастанию и записать в...

Как разрешить запись в файл, по умолчанию запись не разрешена
Помогите! НАчинающий php - программист. Как разрешить запись в файл, по умолчанию запись не...

Запись в файл игнорируя запрет на запись
Доброго времени суток! кто может подсказать, возможно ли с помощью с# осуществить запись в файл,...


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

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