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

Запись структуры и её чтение из файла - C++

Восстановить пароль Регистрация
 
faceoftable
0 / 0 / 0
Регистрация: 21.05.2014
Сообщений: 8
23.05.2014, 18:38     Запись структуры и её чтение из файла #1
пробовал разными способами, ничего не работает, не записывает и не считывает
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <memory.h>
#include <fcntl.h>
#include <stdio.h>
#include <io.h>
#include "Unit1.h"
#include <string.h>
 
 
 struct my_test
{
        char* question;
        char* ans1;
        char* ans2;
        char* ans3;
        double numbertryans ;
    double point ;
 
 
};
 
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::Button1Click(TObject *Sender)
 
{
 
        my_test ms;
        memset (&ms,0,sizeof ms);
        ms.question = new char[80];
        ms.ans1 = new char[80];
        ms.ans2 = new char[80];
        ms.ans3 = new char[80];
        strcpy(ms.question , Form1->Edit1->Text.c_str());
        strcpy(ms.ans1 , Form1->Edit2->Text.c_str());
        strcpy(ms.ans2 , Form1->Edit3->Text.c_str());
       strcpy(ms.ans3 , Form1->Edit4->Text.c_str());
       ms.numbertryans = StrToInt(Edit5->Text);
       ms.point = StrToInt(Edit6->Text);
       FILE* f = fopen("file", "wb");
       Form1->Edit1->Text = ""; 
       Form1->Edit2->Text = "";
       Form1->Edit3->Text = "";
       Form1->Edit4->Text = "";
       Form1->Edit5->Text = "";
       Form1->Edit6->Text = "";
       fwrite((char*)&ms, sizeof(ms), 1, f);
       fclose(f);
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
   my_test ms;
   FILE* f = fopen("file", "rb");
   fscanf(f, "%s %s %s %s", &ms.question, &ms.ans1, &ms.ans2, &ms.ans3);
   fclose(f);
   puts(ms.question);
   puts(ms.ans1);
   puts(ms.ans2);
   puts(ms.ans3);
   Form1->Label1->Caption = ms.question;
   Form1->Label2->Caption = ms.ans1;
   Form1->Label3->Caption = ms.ans2;
   Form1->Label4->Caption = ms.ans3;
}
//---------------------------------------------------------------------------
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.05.2014, 18:45     Запись структуры и её чтение из файла #2
Записываете бинарным методом, а читаете текстовым?
faceoftable
0 / 0 / 0
Регистрация: 21.05.2014
Сообщений: 8
23.05.2014, 18:53  [ТС]     Запись структуры и её чтение из файла #3
alsav22,
C++
1
fread((char*)&ms, sizeof(ms), 1, f); так?????
Добавлено через 2 минуты
alsav22, только-что так попробовал, пока запущена то при нажатии выводит в лейблы, после рестарта, вылет с невнятной ошибкой
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.05.2014, 18:54     Запись структуры и её чтение из файла #4
Цитата Сообщение от faceoftable Посмотреть сообщение
так?????
Как-то так.

Добавлено через 46 секунд
Цитата Сообщение от faceoftable Посмотреть сообщение
вылет с невнятной ошибкой
И что? Записывет, считывает? Значит тема закрыта.
faceoftable
0 / 0 / 0
Регистрация: 21.05.2014
Сообщений: 8
23.05.2014, 18:58  [ТС]     Запись структуры и её чтение из файла #5
alsav22, access violation at address 32657eb0 in module 'cc3260mt.dll'.read of address 006292b0 такая ошибка разве нормально?
i7otep9wka
1 / 1 / 1
Регистрация: 13.12.2011
Сообщений: 75
23.05.2014, 19:02     Запись структуры и её чтение из файла #6
Попробуй использовать вот это:
boost serialization
faceoftable
0 / 0 / 0
Регистрация: 21.05.2014
Сообщений: 8
23.05.2014, 19:04  [ТС]     Запись структуры и её чтение из файла #7
i7otep9wka, нужна именно структура(
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.05.2014, 20:18     Запись структуры и её чтение из файла #8
Цитата Сообщение от faceoftable Посмотреть сообщение
такая ошибка разве нормально?
Нет, ненормально. Уверены, что это связано с данной темой?
Цитата Сообщение от faceoftable Посмотреть сообщение
TForm1::TForm1
http://www.cyberforum.ru/cpp-cli-winforms/
nmcf
4259 / 3690 / 1243
Регистрация: 14.04.2014
Сообщений: 14,450
23.05.2014, 20:23     Запись структуры и её чтение из файла #9
У тебя структура с указателями, запишутся, соответственно, тоже указатели, такие какие были на момент записи.
Либо объяви в структуре массивы char, либо записывай каждый компонент индивидуально, а в случае с переменной длиной ещё и длину предварительно, чтобы знать, сколько считывать потом.
faceoftable
0 / 0 / 0
Регистрация: 21.05.2014
Сообщений: 8
23.05.2014, 20:36  [ТС]     Запись структуры и её чтение из файла #10
nmcf, а переписать как оно будет правильно выглядеть для наглядности можеш?

Добавлено через 2 минуты
nmcf, а то нам этот с++ так афигенно преподовали, что я узнал что такое структура когда задания увидел
i7otep9wka
1 / 1 / 1
Регистрация: 13.12.2011
Сообщений: 75
23.05.2014, 23:18     Запись структуры и её чтение из файла #11
Here, we use the term "serialization" to mean the reversible deconstruction of an arbitrary set of C++ data structures to a sequence of bytes.
http://www.boost.org/doc/libs/1_55_0...doc/index.html

+ то что сказали выше, касающееся указателей
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.05.2014, 23:23     Запись структуры и её чтение из файла #12
Цитата Сообщение от faceoftable Посмотреть сообщение
как оно будет правильно выглядеть для наглядности
...
Цитата Сообщение от faceoftable Посмотреть сообщение
struct my_test
{
char question[100];
char ans1[100];
char ans2[100];
char ans3[100];
double numbertryans ;
double point ;
bool exist;
};
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2014, 23:28     Запись структуры и её чтение из файла
Еще ссылки по теме:

Запись структуры и чтение из файла в структуру ( как бы лучше ) C++
Чтение/запись структуры C++
Запись и чтение структуры в/из файла C++

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
23.05.2014, 23:28     Запись структуры и её чтение из файла #13
Цитата Сообщение от faceoftable Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
struct my_test
{
        char* question;
        char* ans1;
        char* ans2;
        char* ans3;
        double numbertryans ;
    double point ;
 
 
}
Цитата Сообщение от faceoftable Посмотреть сообщение
после рестарта, вылет с невнятной ошибкой
вполне с внятной
у тебя в структуре указатели, сиречь адреса
их ты и записываешь в файл
а после рестарта считываешь но по этим адресам то уже ничего нет, вот программа и рухает
впрочем nmcf, уже это обсказал
Yandex
Объявления
23.05.2014, 23:28     Запись структуры и её чтение из файла
Ответ Создать тему
Опции темы

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