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

Чтение структур из файла - C++

Восстановить пароль Регистрация
 
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 405
21.04.2014, 15:51     Чтение структур из файла #1
Добрый день. Такой вопрос: есть структура, эту структуру заполнили с клавиатуры и записали в файл. Затем нужно работать с этим файлом, я не могу понять, как открыть этот файл как структуры для работы с её элементами
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2014, 15:51     Чтение структур из файла
Посмотрите здесь:

Чтение массива структур из файла C++
C++ Clipboard (запись/чтение) массива структур
C++ Запись и чтение структур данных
Форматированное чтение из файла в массив структур C++
C++ Чтение из текстового файла массив структур
C++ Thread-safe ли чтение структур?
C++ Чтение массива структур из бинарного файла
Чтение вектора структур из файла C++
Чтение из файла в массив структур (ошибка со string) C++
Чтение структур с файла C++
C++ Чтение из файла массива структур
Чтение массива структур из бинарного файла C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Меорн
74 / 59 / 29
Регистрация: 01.02.2014
Сообщений: 202
21.04.2014, 17:04     Чтение структур из файла #2
есть структура, эту структуру заполнили с клавиатуры и записали в файл.
как записали?
avatar1870
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 405
21.04.2014, 17:14  [ТС]     Чтение структур из файла #3
Вот так

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
// lab_19.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <cstring> 
#include <string>
#include <cstdio>
#include <conio.h>
#include <fstream>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
using namespace std;
 
struct mystruct
{
    int C; //Шифр цеха
    int P; //Шифр рабочего
    int data; //Дата
    int D;//Шифр детали
    //
    int K;//Количество изготовленных деталей
    int RD;//Расценка одной детали
    //
    int Ce;//Сумма за изготовление деталей данного шифра
}
void main(void)
{
    //
    setlocale(LC_ALL, "Russian");
    int count=0;
    int C1[25];int P1[25];int Data1[25];int D1[25];int K1[25];int RD1[25];int Ce[25];
    ofstream fout0 ("FZ.txt");
    ofstream fout1 ("NS.txt");
    ofstream fout2 ("FP.txt");
    cout<<"Введите количество записей в файле";
    cin>>count;
    mystruct *str = new mystruct [count];
    //
    for(int i=0; i<count; i++)
    {
        cout<<"Ввод данных"<<endl;
        cout<<"Введите информацию по"<< i+1 <<" записи: \n";
        cout<<"Шифр цеха_Шифр рабочего_Дата_Шифр детали_Количество изготовленных деталей_расценка за деталь\n";
        cin >> str[i].C>>str[i].P>>str[i].data>>str[i].D>>str[i].K>>str[i].RD;
    }
    //Создание файла FZ, содержащего структуру
    for(int i=0;i<count;i++)
    {
        fout0<<str[i].C<<" "<<str[i].P<<" "<<str[i].data<<" "<<str[i].D;
    }
    fout0.close();
    //Создание файла NS, содержащего данные шифр детали и расценку одной детали
    
    for(int i=0;i<count;i++)
    {
        fout1<<str[i].D<<" "<<str[i].RD;
    }
    //Создание файла FP
    ifstream fout0 ("FZ.txt");
    for(int i=0;i<count;i++)
    {
        fout0 >> C1; 
        fout0 >> P1;
        fout0 >> Data1;
        fout0 >> D1;
        fout1 >> K1;
        fout1 >> RD1;
        Ce=K1*RD1;
        fout2<<C1<<P1<<Data1<<D1<<RD1<<endl;
 
    }
    
    system("pause);
        return 0;
}
Дана последовательность записей, состоящая из реквизитов: шифр цеха (Ц), шифр рабочего (Р), дата (ДТ), шифр детали (Д), количество изготовленных деталей (К).
Требуется написать программу для выполнения следующих операций:
ввод записей и создание файла FZ;
создание файла NS, каждая запись которого включает реквизиты – шифр детали (Д) и расценку одной детали (РД)
создание на базе файлов FZ и NS файла FP.
Реквизиты записей файла FP включают в себя реквизиты: С, Р, ДТ, Д (передаются из файла FZ) и реквизит С (сумма, начисленная за изготовление деталей данного шифра), вычисляемая умножением реквизита К (количество изготовленных деталей) записей файла FZ на реквизит РД записей файла NS. Поиск записей в файле NS проводится по реквизиту – шифр детали (Д) текущей записи файла FZ. Если в файле NS отсутствует запись с заданным шифром детали, то выдать сообщение: «В файле NS нет расценки детали с шифром <шифр детали>».

Вся проблема в том, что бы прочитать из файла данные как структуру. И не до конца понимаю, как сделать проверку
nmcf
4441 / 3779 / 1278
Регистрация: 14.04.2014
Сообщений: 14,872
21.04.2014, 19:03     Чтение структур из файла #4
Считывай также как записал в строке 51. Только при записи ещё endl в конце добавляй.
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
21.04.2014, 22:59     Чтение структур из файла #5
avatar1870, Добрый Вечер! Читать из файла в структуру можно так, пример:
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
struct pupil //определение структуры
{
    string name; //имя
    int age; //возраст
    float rating; //рейтинг
};
 
void Read() 
{
    fstream f("In.txt", ios::in);
    if (!f) 
    {
        cout << " Файл не обнаружен" << endl; 
    } 
    else 
    {
        while ( !f.eof()) 
        {
            pupil tmp; //создали структуру
            f >> tmp.name >> tmp.age >> tmp.rating; //читаем в нее
            if ( (tmp.name.size() == 0) || (tmp.age <= 0))
            {
                cout << " Ошибка. Введены неверные данные." << endl;
                break;
            }
        }
    }
    f.close();
}
После чего остается вывести на экран эту структуру. Если я правильно понял Вас.
Yandex
Объявления
21.04.2014, 22:59     Чтение структур из файла
Ответ Создать тему
Опции темы

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