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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
KyKi
3 / 3 / 0
Регистрация: 12.09.2013
Сообщений: 134
#1

Бинарные файлы структур - C++

26.12.2013, 00:21. Просмотров 403. Ответов 0
Метки нет (Все метки)

Задание: Дан файл f, содержащий сведения о книгах. Сведения о каждой из книг: это фа-милия автора, название и год издания.
Определить названия книг данного автора: изданных с 1960г. Полученную информацию записать в файл g.
Подскажите пожалуйста что в коде не так,а именно в функции поиска таких книг,что-то никак не пойму
C++ (Qt)
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
#include <iostream>
#include <fstream>
using namespace std;
 
struct Book
{
    char name[20];  //фамилия автора
    char* nazvanie; //название книги
    int year; //год издания
};
 
void createfile(ofstream&fout,char fname[]) //функция создания файла
{
    setlocale(LC_ALL,"Russian");
    Book x; //переменная-структура для ввода в файл
    fout.open(fname,ios::binary); //открытия файла fout
    cout<<"\n Введите фамилию автора книги:"<<endl;
    cin>>x.name;
    while(x.name[0]!='*') //выход из цикла, когда фамилия начинается со *
    {
        cout<<"\n Введите название книги:"<<endl;
        cin>>x.nazvanie;
        cout<<"\n Введите год издания книги:"<<endl;
        cin>>x.year;
        fout.write((char*)&x, sizeof x);
        cin>>x.name;
    }
    fout.close();  //закрыть файл
}
 
 
void Read_file(ifstream&fin,char fname[])
{
    setlocale(LC_ALL,"Russian");
    Book x; //переменная-структура для чтения из файла
    fin.open(fname,ios::in|ios::binary);    //открытие файла
    cout<<"\n Содержимое файла:"<<fname<<endl;
    while (fin.read((char *)&x,sizeof x))   //прочитать из файла структуры в переменную x, пока не конец файла
    {  
        cout<<x.name<<" ;"<<x.nazvanie<<" ;"<<x.year;   //вывод полей структуры через пробел и ;
        cout<<endl;
    }
    cout<<endl; //перевод строки
    fin.close();    //закрыть файл
 
}
 
void Search(char fname[],ifstream &fin,char gname[],ofstream &gout, char ss[])
{
    setlocale(LC_ALL,"Russian");
    fin.open(fname,ios::in|ios::binary);    //открыть файл f для чтения
    gout.open(gname,ios::out|ios::binary);  //открыть файл f для записи
    Book x; //переменная-структура для чтения из файла
    while (fin.read((char *)&x,sizeof x))   //прочитать из файла сведения о книгах в переменную x, пока не конец файла
    {  //поиск элемента файла - книги изданной с 1960г.
        if (x.nazvanie=x.nazvanie && x.year=x.year)
            gout.write((char *)&x,sizeof x);
    }
    gout.close();
    fin.close();        //закрытие файла fin
}
 
void main()     //главная функция
{
  setlocale(LC_ALL,"Russian");
  char fname[20],gname[20];
  char ss[15];
  fstream fout, fin;
  char c;
  cout<<"Введите имя файла f: ";
  cin>>fname;
  cout<<"Если хотите создавать новый файл нажмите Y?"<<endl;
  cin>>c;
  if (c=='Y') 
  {
      createfile(fout,fname);   //вызов функции создания файла fout
      Read_file(fin,fname); //вызов функции чтения файла fin
  }
  else Read_file(fin,fname);    //вызов функции чтения файла fin
  cout<<"Введите имя файла результатов g: ";
  cin>>gname;
  cout<<"Введите имя автора книги для поиска его книг изданных после 1960г: ";
  cin>>ss;
  Search(fname,fin,gname,gout, ss);//поиск книг
  cout<<"\n Содержимое файла результатов: "<<endl;
  Read_file(fin,fname); //вызов функции чтения файла gin
  cout<<endl;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2013, 00:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Бинарные файлы структур (C++):

Бинарные файлы - C++
Всё началось с необходимости наличия программы, в которую вводишь число и она говорит есть ли такое в файле(мне кажется удобнее...

Бинарные файлы - C++
Ребята у вас есть какие та примеры программок работы с бинарными файлами, к примеры поменять местами максимальные и минимальные значения...

Бинарные файлы.. - C++
Доброго времени суток, господа! Возникла проблемка с открытием бинарного файла: char stroka; fstream bin_file; ...

Бинарные файлы c++ - C++
Здравствуйте. Нужно в бинарный файл записать строку (нового стиля), единственное что известно, так это то, что в строке не более 16...

Бинарные файлы - C++
Заполнить бинарный файл случайными числами. Найтим min значение (их может быть несколько) и заменить min значение нулями

Бинарные файлы - C++
В файле содержатся числа. Сформировать из них матрицу, содержащую пять элементов в строке. Лишние числа отбросить. Вывести на печать...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2013, 00:21
Привет! Вот еще темы с ответами:

Бинарные файлы - C++
1.Записать в файл N действительных чисел a1, a2, …,an. Организовать новый файл , элементы которого вычисляются по формуле:...

бинарные файлы, C++ - C++
Работа с двоичными файлами. Создать файл состоящий из n-вещественных чисел. Найти сумму всех положительных чисел данного файла.

Бинарные файлы - C++
Помогите пожалуйста написать программы. Исходный файл формировать программно. Количество элементов исходного файла неизвестно. В...

Бинарные файлы - C++
Всем добрый день/вечер/ночь! У меня такой вопрос. Создал структуру и записал в файл. При записи в пошаговом режиме - все нормально....


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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