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

fwrite\fread: чтение и запись в бинарные файлы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ ассоциативный массив map c двумерным массивом http://www.cyberforum.ru/cpp-beginners/thread869732.html
Искал информацию в интернете но безрезультатно. Необходимо сделать ассоциативный массив с со строковым ключом и двумерным массивом 3х3 в качестве значения ключа. создаю ассоциативный массив: map <string,int> MyMap; а как его заполнить?? (конкретно массив 3х3) пробовал так: dungeon_layout = {{1,1,1},{1,0,1},{1,1,1}};
C++ Ввод текста в графическом режиме Здравствуйте, можно ли вводить текст в графическом режиме (консольная графика)? Как это реализовать? http://www.cyberforum.ru/cpp-beginners/thread869724.html
Удаление памяти посредством delete[] C++
Добрый день! Столкнулся с проблемой: при удалении выделенной памяти, программа зависает, будто не способна выполнить данный оператор. Ошибок при компиляции не возникает, может кто-то знает, в чём могла бы закрасться проблема? Заранее большое спасибо! int MyArray::iliffeView(int a, int b, int c, int d) { int *vector = new int; int x = 0; for(int i = 0; i <= high - low; ++i) for(int...
Разработать класс Car (автомобиль) C++
Разработать класс Car (автомобиль). Объявить переменные типа этого класса. Определить данные и методы.
C++ Деление стороны квадрата на N равных частей http://www.cyberforum.ru/cpp-beginners/thread869698.html
Здравствуйте, уважаемые форумчане! Нужна помощь со следующим заданием: "Каждую сторону квадрата разделить на N равных частей. Соединить все точки разбиения, включая вершины, отрезками. Число разбиений N ввести с клавиатуры. Обеспечить контроль правильности ввода и возможность стирания символов, которые введены ошибочно. Центр квадрата и одну точку, принадлежащую стороне квадрата, отметить...
C++ Вычислить значения функции Помогите пожалуйста написать программы на turbo C++. Задания простые, а я не могу((((. 1)Вычислить значения функции при A=1.5, B=2, C=2.5 (константы) и произвольном x (ввести с клавиатуры). z={B}^{x}+\frac{A}{{x}^{C}}+\sqrt{\mid A-x\mid } Надеюсь на Вашу помощь! Alex1309, правила форума: один вопрос - одна тема. Ваши задания вынесены в отдельные темы: ... подробнее

Показать сообщение отдельно
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.05.2013, 14:09     fwrite\fread: чтение и запись в бинарные файлы
Цитата Сообщение от Gerbasha Посмотреть сообщение
В общем решил проблему так:
Это все очень криво. Не видно как объекты класса создаются. Если поле класса указатель, то под него, в конструкторе, память обычно выделяется. А если память выделена, то в неё уже можно читать из файла, а не создавать дополнительную переменную, адрес которой присваивается полю-указателю.

Добавлено через 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
class tPoint
{
private:
    float mX,mY;
    float *mDescriptor;
public:
    tPoint()
    {
        mX = 0.0;
        mY = 0.0;
        mDescriptor = new float(0.0);
    }
 
    tPoint(float x, float y, float z)
    {
        mX = x;
        mY = y;
        mDescriptor = new float(z);
    }
 
    void Write(FILE *f)
    {
        fwrite(&mX, sizeof(float), 1, f);
        fwrite(&mY, sizeof(float), 1, f);
        fwrite(mDescriptor, sizeof(float), 1, f);
    }
 
    void Read(FILE *f)
    {
        fread(&mX, sizeof(float), 1, f);
        fread(&mY, sizeof(float), 1, f);
        fread(mDescriptor, sizeof(float), 1, f);
       }
       
     void Print()
     {
        printf("%f\n",  mX);
        printf("%f\n", mY);
        printf("%f\n", *mDescriptor);
     }
};
 
int main()
{
 
    tPoint obj(5.0, 5.0, 5.0);
    FILE *f;
    f = fopen("info.dat", "wb");
    obj.Write(f);
    fclose(f);
    
    tPoint obj2;
    f = fopen("info.dat", "rb");
    obj2.Read(f);
    fclose(f);
               obj2.Print();
              
 return 0;
}
 
Текущее время: 09:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru