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

Чтение из бинарного файла - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ посчитать макс и мин элемент массива ,сумма между 1-ым и 2-ым положит элементом и упорядочить по определённому принципу http://www.cyberforum.ru/cpp-beginners/thread894099.html
В одномерном массиве состоящем из n вещественных элементов вычислить :1)минимальный и максимальный по модулю элемент массива;2)сумма элеентов,расположенных между первым и вторым положительным элементов.преобразовать массив так,чтобы в первой его половине располагались элементы,состоящие в нечётных позициях,а во второй половине - элементы,состоящие в чётных позициях Сегодня последний день сдачи,...
C++ Работа цикла типа while. Найти ошибку в коде Добрый день. Ребята, помогите, пожалуйста. Не могу понять, что не так. В итоге результат выходит: "Vashe chislo = 0". Само задание в комментарии в коде. Спасибо! // Решения задачи методом подбора. Какое число нужно умножить на 17, // чтобы получить число в интервале . #include <stdio.h> #include <iostream> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread894098.html
Дата в текст , не могу доделать C++
Дали тему курсового...преобразование каленарных дат различных форматов в текст ..тоесть нужно чтоб и число,и месяц,и год были записаны словами... пока что разобрался только с месяцами. помогите с числами и годами пожалуйста#include <iostream> #include <iomanip> #include <conio.h> #include <string.h> #include <stdlib.h> #include <windows.h> using namespace std; void main( void ) {
C++ Выяснить, пройдет ли кирпич с ребрами a,b,c в прямоугольное отверстие со сторонами x и y.
Даны действительные числа a, b, c, x, y. Выяснить, пройдет ли кирпич с ребрами a,b,c в прямоугольное отверстие со сторонами x и y. Просовывать кирпич в отверстие разрешается только так, чтобы каждое из его ребер было параллельно или перпендикулярно каждой из сторон отверстия. Добавлено через 12 минут не знаю как её написать в C++ напишите нужно очень
C++ True или False http://www.cyberforum.ru/cpp-beginners/thread894089.html
Дорогие, форумчаны! Помогите, пожалуйста, написать программу. Написать программу, которая печатает True или False в зависимости от того, выполняются или нет заданные условия: - квадрат заданного трехзначного числа равен кубу суммы цифр этого числа; - сумма двух первых цифр заданного четырехзначного числа равна сумме двух его последних цифр; - среди цифр заданного трехзначного числа есть...
C++ Нужна блок-схема ! двухмерный массив Помогите с блок-схемой !! Двухмерный массив:help: #include <iostream> #include <stdlib.h> #include <time.h> #include <math.h> #include <conio.h> using namespace std; подробнее

Показать сообщение отдельно
Radgalf
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 39

Чтение из бинарного файла - C++

07.06.2013, 03:47. Просмотров 1735. Ответов 14
Метки (Все метки)

Всем приветы.
Подскажите или помогите, пожалста.
Есть вот такая штука:
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
#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;
fstream writ;    // чтение
ofstream out;    //  запись
int vsego=0;
struct NOTEBOOK {
     
    int x;          //разрешающая способность дисплея по горизонтали
    int y;        //  по вертикали
    float massa;        // масса
    float ix,iy,is;        // габаритные размеры ноутбука в дюймах ВЫСОТАхДЛИНАхШИРИНА
    int mb;        //   максимальный объем ОЗУ в мегабайтах
    int sv;        //   размер видеопамяти в мегабайтах
    float mg;    //   частота процессора в МГц
    float ggb;        // объем HDD в гигабайтах
    int f;                              //  частота регенерации
    float d;                          //  размер диагонали дисплея
    int price;                        //  цена
    char model[20];            //  наименование
}not[3],n[3];;
NOTEBOOK inStruct (NOTEBOOK not[], int i )
{    // Функция чтения данных из файла в структуру
    char c;
    for ( int j = 0; j<19; j++ )
    {
        writ.get(c);
        not[i].model[j] = c;
    }
    not[i].model[19] = '\0';
    writ>>not[i].price;
    writ>>not[i].massa;
    writ>>not[i].ix;
    writ>>c;
    writ>>not[i].iy;
    writ>>c;
    writ>>not[i].is;
    writ>>not[i].mg;
    writ>>not[i].mb;
    writ>>not[i].d;
    writ>>not[i].sv;
    writ>>not[i].x;
    writ>>c;
    writ>>not[i].y;
    writ>>not[i].f;
    writ>>not[i].ggb;
    return not[i];
};
void fprint(NOTEBOOK n[], int i)
{    //  функция записи в файл "note.dat"
out.write((char*)(&not[i]),sizeof(NOTEBOOK));
};
 
void main()
{ const int X=3;
    writ.open("note.txt");
    NOTEBOOK not[X],n[X];
    for (int i=0; i<X; i++ )
        inStruct( not,i );
    writ.close();
    writ.clear();
 
    out.open( "note.dat", ios_base::binary|ios_base::in|ios_base::out);
    out.seekp(ios::beg);
    out.write(reinterpret_cast<char*>(&vsego),sizeof(int));
    
    for ( int i=0; i<X; i++ )
    {
        if ( not[i].massa < 7 ){
            vsego++;
            fprint( not, i );
    }
    }
    out.seekp(ios::beg);
    out.write(reinterpret_cast<char*>(&vsego),sizeof(int));
    out<<endl;
    out.close();
 
 
    vsego=0;
    writ.open("note.dat", ios_base::binary|ios_base::in|ios_base::out );
    writ.read(reinterpret_cast<char*>(&vsego),sizeof(int));
    for (int i=0;i<vsego;i++){
    writ.read((char*)(&not[i]),sizeof(NOTEBOOK));
    }
 
    for (int i=0;i<vsego;i++){
        cout<<not[i].x<<" ";
        cout<<not[i].y<<" ";
        cout<<not[i].massa<<" ";
        cout<<not[i].ix<<" ";
        cout<<not[i].iy<<" ";
        cout<<not[i].is<<" ";
        cout<<not[i].mb<<" ";
        cout<<not[i].sv<<" ";
        cout<<not[i].mg<<" ";
        cout<<not[i].ggb<<" ";  
        cout<<not[i].f<<" ";
        cout<<not[i].d<<" ";        
        cout<<not[i].price<<" ";
        cout<<not[i].model[19]<<" ";
    }
 
    cin.get();        // ожидание нажатия кл. Enter
}

Суть в том что программа считывает текстовый файл в структуру, затем проверяет некоторое условие, записывает в бинарный файл те объекты структуры, которые этому условию удовлетворяет, затем уже считывает опять же данные из бинарного файла и выводит в консоль.

Все успешно работает но в 86 строчке ( writ.read((char*)(&not[i]),sizeof(NOTEBOOK)); ) программа почему то обнуляет все считанные данные =(
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru