Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ объединение C++ 1. Составить программу, в которой определить объединение состоящее из 2 элементов: целочисленного и символьного. Занести значения в переменную целого типа и вывести значение переменной типа char,... https://www.cyberforum.ru/ cpp-beginners/ thread2444596.html C++ Структуры C++
Составить структуру данных, которая будет хранить следующие данные: Перечень студентов группы с полями: Имя, Фамилия, Год рождения, Средний балл, Форма обучения (платная/бесплатная). 1. По...
C++ Объясните пожалуйста работу программы https://www.cyberforum.ru/ cpp-beginners/ thread2444587.html
#include <iostream> #include <stdio.h> #include <conio.h> using namespace std; int main(int argc, char* argv) { int n = 4; int arr; int temp; for (int i = 0; i < n; i++) { for (int j...
C++ Вывести информацию о числе свободных мест в поездах, следующих до заданного пункта назначения У администратора железнодорожных касс имеется информация о свободных местах в поездах на текущие сутки в следующем виде: пункт назначения, время отправления, число свободных мест. Вывести информацию... https://www.cyberforum.ru/ cpp-beginners/ thread2444582.html
Задача на эффективные алгоритмы C++
Я пытаюсь решить задачу на эффективные алгоритмы: На вход программы подаются заглавные латинские буквы, ввод этих символов заканчивается точкой. Напишите эффективную по времени работы и по...
C++ Функция перестановки значений двух переменных Напишите обобщенную функцию, которая меняет значения в двух переменных. Ваша функция должна иметь два параметра одного типа. Протестируйте функцию с помощью значений типа int, double и string. https://www.cyberforum.ru/ cpp-beginners/ thread2444566.html
C++ Имплиментируйте класс Stack используя класс vector https://www.cyberforum.ru/ cpp-beginners/ thread2444565.html
В слудующем коде GenericStack реализован класс Stack с помощью массива. Используя этот код, реализуйте этот класс с помощью класса vector.
C++ Массив из вектора
#include <iostream> #include <vector> using namespace std; int get(const vector<vector<int>> & matrix) { for (unsigned row = 0; row < matrix.size(); row++) { cout<<endl; ...
C++ Имплиментация класса vector https://www.cyberforum.ru/ cpp-beginners/ thread2444557.html
Имплиментируйте С++ класс vector самостоятельно. В стандартоном классе vector множество фукций. Вы создайте класс с методами указанные в следующем UML диаграмме
C++ Одномерные массивы в С https://www.cyberforum.ru/ cpp-beginners/ thread2444551.html
Буду очень благодарен , если поможете с задачей . С помощью генератора случайных чисел сформировать массив из 20 элементов. Найти максимальный и минимальный элементы массива, поменять их местами и...
C++ Работа с файлами
Для произвольного текстового файла программа составляет файл записей фиксированной длины, содержащий файловые указатели на строки текстового файла. Программа производит логическую сортировку строк,...
C++ Вычисление значения интервально заданной функции https://www.cyberforum.ru/ cpp-beginners/ thread2444535.html
Написать программу для вычисления значения функции. Все необходимые для расчетов величины вводятся с клавиатуры. Результаты расчета выводятся на экран. Программа должна содержать простое меню,...
2 / 1 / 1
Регистрация: 11.11.2018
Сообщений: 79
0

Ошибка при считывании структуры из бинарного файла - C++ - Ответ 13529917

28.04.2019, 17:46. Показов 1350. Ответов 4
Метки (Все метки)

Всём доброго времени суток. Условие таково. Из файла, открытого в бинарном режиме, считывается информация в структуру.
Если файла нет, то он создаётся и туда помещается заданная информация. При добавлении ещё одного элемента в файл я закрываю программу.
Затем я хочу считать из файла информацию и вывести её, НО читает 2 элемента, выводит первый, который записывается по умолчанию, а добавленный нет, и программа крашится, помогите, не знаю уже что и делать.

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
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
struct inf
{
    
    char* surname;
    int age;
    char* sex;
    int etap;
    int usp;
};
void output()
{
    inf gas[100];
    int i=0;
    ifstream in("11.txt",ios::binary);
    cout<<setw(1)<<"Surname"<<setw(10)<<"Age"<<setw(11)<<"Sex"<<setw(9)<<"Etap"<<setw(9)<<"Usp\n";
    cout<<"|___________________________________________|\n" ;
   while(in.read((char*)&gas[i],sizeof(gas[i])))
   {
        cout<<setw(1)<<"|"<<gas[i].surname<<setw(10)<<gas[i].age<<setw(11)<<gas[i].sex<<setw(8)<<gas[i].etap<<setw(8)<<gas[i].usp<<"\n";
        i++;
}
    cout<<"|___________________________________________|\n" ;
in.close();
}
void add(int &n)
{
 
inf mas;
    cout<<"\nSurname:";
    mas.surname=new char[30];
    cin>>mas.surname;
    do
    {
      cout<<"\nAge:";
      cin>>mas.age;
    }
    while(mas.age<4||mas.age>50);
    cout<<"\nSex:";
    mas.sex=new char[30];
    cin>>mas.sex;
    do
    {
      cout<<"\nEtap:";
      cin>>mas.etap;
    }
    while(mas.etap<1||mas.etap>6);
    do
    {
      cout<<"\nUsp:";
      cin>>mas.usp;
    }
    while(mas.usp<4||mas.usp>10);
    ofstream of("11.txt",ios::binary| ios::app);
    of.write((char*)&mas,sizeof(mas));
    of.close();
    n++;
}
int main()
{
    inf mas[1000], s;
    int n(0);
    ifstream  in("11.txt", ios::binary);
    if (!in)
    {
        in.close();
        in.clear();
       inf g;
       g.surname=new char[30];
       g.sex=new char[30];
       g.surname="sdfg";g.age=23;g.etap=4;g.sex="male";g.usp=7;
        ofstream f("11.txt", ios::binary);
        f.write((char*)&g, sizeof(g));
        f.close();
        f.clear();
    }
    
    //in.open("11.txt", ios::binary);
    while(in.read((char*)&mas[n], sizeof(mas[n])))
    {
        n++;
    }
    //add(n);
    cout<<n;
    output();
    in.close();
}


Вернуться к обсуждению:
Ошибка при считывании структуры из бинарного файла C++
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.04.2019, 17:46
Готовые ответы и решения:

При считывании структуры с файла где-то берёт мусор
Задача, в которой нужно сделать структуру из 4 полей: Собственник Авто, Год выпуска Авто, Марка...

Ошибка при считывании файла
Пожалуйста помогите разобраться почему не находит указанный мною файл. #include &lt;windows.h&gt;...

Ошибка при считывании из файла
При считывании файла (есть в архиве, outfile.txt) в 1 строке StringGrid'a (после фиксированной)...

Ошибка при считывании из файла
пишу тестер при кампиляции выдает не понятную ошибку,думаю проблема при считывании вопросов из...

4
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.04.2019, 17:46

segmentation fault в считывании из бинарного файла.
Подскажите, пожалуйста, как устранить такую проблемы: Заношу 3 элемента в список, сохраняю их в...

Ошибка при считывании координат с файла
Имеется файл POINTS.TXT, в котором записаны координаты точек (в формате: в одной строчке два числа...

Ошибка, при считывании инфы с файла...
Вот есть код:#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; #include &lt;fstream.h&gt;...

Ошибка при считывании матрицы из файла
void readfromfile (FILE * fp, double ** p, int num) { int i,j; for(i=0;i&lt;num;i++) ...

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