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

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

Войти
Регистрация
Восстановить пароль
 
METZEN
0 / 0 / 0
Регистрация: 17.09.2010
Сообщений: 32
#1

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

17.05.2011, 10:50. Просмотров 594. Ответов 10
Метки нет (Все метки)

Проверьте программу,не могу найти ошибку
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#include <stdio.h>
 #include <string.h>
 #include <windows.h>
 #include <conio.h>
 #include <iostream>
 using namespace std;
 
 char bufRus[256];
  char* Rus(char* mes)
  { AnsiToOem(mes, bufRus);
    return bufRus;
   }
 
struct DINAMO
{
    char fam[20];
    int shayb;
    int pereda4;
};
struct SPARTAK
{
    char fam[20];
    int shayb;
    int pereda4;
}
 
int compare(const void *din,const void *spa);
 
 
void create()
{
DINAMO din;
int sl;
FILE *fbin;
if ((fbin =fopen("Dinamo.bin","wb")) == NULL)
   { puts(Rus("Ошибка создания  файла\n "));
   getch();
   }
  else
        { do
           { cout << Rus("\n Фамилия: ");
                 cin.get() ; gets (din.fam) ;
                 cout << Rus("\n Число шайб: ");
                 cin >> din.shayb;
                 cout << Rus("\n Количество передач: ");
                 cin >> din.pereda4;
                 fwrite(&din, sizeof(din),1,fbin);
                 cout<<Rus("\n Продолжить ввод? (1-да/0-нет)");
                 cin >> sl;
                 } while(sl == 1);
   }  
  fclose(fbin);
}
 
void creat()
{
SPARTAK spa;
int sl1;
FILE *f1bin;
if ((f1bin =fopen("Spartak.bin","wb")) == NULL)
   { puts(Rus("Ошибка создания  файла\n "));
   getch();
   }
  else
        { do
           { cout << Rus("\n Фамилия: ");
                 cin.get() ; gets (spa.fam) ;
                 cout << Rus("\n Число шайб: ");
                 cin >> spa.shayb;
                 cout << Rus("\n Количество передач: ");
                 cin >> spa.pereda4;
                 fwrite(&spa, sizeof(spa),1,f1bin);
                 cout<<Rus("\n Продолжить ввод? (1-да/0-нет)");
                 cin >> sl1;
                 } while(sl1 == 1);
   }  
  fclose(f1bin);
}
 
void view()
  { FILE *fbin;
        if ((fbin =fopen("Dinamo.bin","rb")) == NULL)
         { puts(Rus("Ошибка открытия  файла\n"));
           getch();
         }
        else
         { fseek(fbin, 0, SEEK_END);
           int n_record = ftell(fbin)/sizeof(DINAMO);
           DINAMO *din = new DINAMO[n_record];
           fseek(fbin, 0, SEEK_SET);
           fread(din, sizeof(DINAMO),n_record, fbin);
           fclose(fbin);
           qsort(din, n_record, sizeof(DINAMO), compare);
           for (int i=0; i < n_record; i++)
                cout << "\n" << din[i].fam << "  " <<
                 din[i].shayb << "  " << din[i].pereda4 << "  " <<
                cout << "\n";
                getch();
         }
  }
 
void vie()
  { FILE *f1bin;
        if ((f1bin =fopen("Spartak.bin","rb")) == NULL)
         { puts(Rus("Ошибка открытия  файла\n"));
           getch();
         }
        else
         { fseek(f1bin, 0, SEEK_END);
           int n_record = ftell(f1bin)/sizeof(SPARTAK);
           SPARTAK *spa = new SPARTAK[n_record];
           fseek(f1bin, 0, SEEK_SET);
           fread(spa, sizeof(SPARTAK),n_record, f1bin);
           fclose(f1bin);
           qsort(spa, n_record, sizeof(SPARTAK), compare);
           for (int i=0; i < n_record; i++)
                cout << "\n" << spa[i].fam << "  " <<
                 spa[i].shayb << "  " << spa[i].pereda4 << "  " <<
                cout << "\n";
                getch();
         }
  }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2011, 10:50     Бинарный файл и структура
Посмотрите здесь:

Структура, бинарный файл - C++
Помогите пожалуйста сделать задачу. Описать структуру с именем AEROFLOT, которая содержит следующие поля: 1). Название пункта...

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

Запись в бинарный файл - C++
Помогите приделает функцию что бы она записывала не в обычный файл а в бинарный, уже три чеса сижу выходит ерунда. Надо еще что бы при...

Запись в бинарный файл - C++
Подскажите пожалуйста,где в коде ошибка??никак найти не могу почему х не считает. В файл записываются 0. Задние на картинке. #include...

Бинарный файл (с++) и структуры - C++
Пользователь вводит количество студентов. Вводится информация о студенте и тут же выводится в бинарный файл. Встает несколько вопросов: как...

Бинарный файл структур - C++
// lab_3.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &lt;fstream&gt; #include &lt;iostream&gt; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
17.05.2011, 10:53     Бинарный файл и структура #2
Debug тебе в помощь
absokolov
29 / 29 / 1
Регистрация: 10.05.2011
Сообщений: 120
17.05.2011, 11:01     Бинарный файл и структура #3
Цитата Сообщение от METZEN Посмотреть сообщение
Проверьте программу,не могу найти ошибку
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#include <stdio.h>
 #include <string.h>
 #include <windows.h>
 #include <conio.h>
 #include <iostream>
 using namespace std;
 
 char bufRus[256];
  char* Rus(char* mes)
  { AnsiToOem(mes, bufRus);
    return bufRus;
   }
 
struct DINAMO
{
    char fam[20];
    int shayb;
    int pereda4;
};
struct SPARTAK
{
    char fam[20];
    int shayb;
    int pereda4;
}
 
int compare(const void *din,const void *spa);
 
 
void create()
{
DINAMO din;
int sl;
FILE *fbin;
if ((fbin =fopen("Dinamo.bin","wb")) == NULL)
   { puts(Rus("Ошибка создания  файла\n "));
   getch();
   }
  else
        { do
           { cout << Rus("\n Фамилия: ");
                 cin.get() ; gets (din.fam) ;
                 cout << Rus("\n Число шайб: ");
                 cin >> din.shayb;
                 cout << Rus("\n Количество передач: ");
                 cin >> din.pereda4;
                 fwrite(&din, sizeof(din),1,fbin);
                 cout<<Rus("\n Продолжить ввод? (1-да/0-нет)");
                 cin >> sl;
                 } while(sl == 1);
   }  
  fclose(fbin);
}
 
void creat()
{
SPARTAK spa;
int sl1;
FILE *f1bin;
if ((f1bin =fopen("Spartak.bin","wb")) == NULL)
   { puts(Rus("Ошибка создания  файла\n "));
   getch();
   }
  else
        { do
           { cout << Rus("\n Фамилия: ");
                 cin.get() ; gets (spa.fam) ;
                 cout << Rus("\n Число шайб: ");
                 cin >> spa.shayb;
                 cout << Rus("\n Количество передач: ");
                 cin >> spa.pereda4;
                 fwrite(&spa, sizeof(spa),1,f1bin);
                 cout<<Rus("\n Продолжить ввод? (1-да/0-нет)");
                 cin >> sl1;
                 } while(sl1 == 1);
   }  
  fclose(f1bin);
}
 
void view()
  { FILE *fbin;
        if ((fbin =fopen("Dinamo.bin","rb")) == NULL)
         { puts(Rus("Ошибка открытия  файла\n"));
           getch();
         }
        else
         { fseek(fbin, 0, SEEK_END);
           int n_record = ftell(fbin)/sizeof(DINAMO);
           DINAMO *din = new DINAMO[n_record];
           fseek(fbin, 0, SEEK_SET);
           fread(din, sizeof(DINAMO),n_record, fbin);
           fclose(fbin);
           qsort(din, n_record, sizeof(DINAMO), compare);
           for (int i=0; i < n_record; i++)
                cout << "\n" << din[i].fam << "  " <<
                 din[i].shayb << "  " << din[i].pereda4 << "  " <<
                cout << "\n";
                getch();
         }
  }
 
void vie()
  { FILE *f1bin;
        if ((f1bin =fopen("Spartak.bin","rb")) == NULL)
         { puts(Rus("Ошибка открытия  файла\n"));
           getch();
         }
        else
         { fseek(f1bin, 0, SEEK_END);
           int n_record = ftell(f1bin)/sizeof(SPARTAK);
           SPARTAK *spa = new SPARTAK[n_record];
           fseek(f1bin, 0, SEEK_SET);
           fread(spa, sizeof(SPARTAK),n_record, f1bin);
           fclose(f1bin);
           qsort(spa, n_record, sizeof(SPARTAK), compare);
           for (int i=0; i < n_record; i++)
                cout << "\n" << spa[i].fam << "  " <<
                 spa[i].shayb << "  " << spa[i].pereda4 << "  " <<
                cout << "\n";
                getch();
         }
  }
А на что ругается то?
METZEN
0 / 0 / 0
Регистрация: 17.09.2010
Сообщений: 32
17.05.2011, 11:07  [ТС]     Бинарный файл и структура #4
много на что.В часности на compare
absokolov
29 / 29 / 1
Регистрация: 10.05.2011
Сообщений: 120
17.05.2011, 11:23     Бинарный файл и структура #5
Цитата Сообщение от METZEN Посмотреть сообщение
много на что.В часности на compare
Так у вас эта функция должна возвращать инт! А у вас она и не расписана!

P.S. Написал то что увидел! Читать весь код просто лень, точно так же как и вам лень скинуть сюда ошибки!
METZEN
0 / 0 / 0
Регистрация: 17.09.2010
Сообщений: 32
17.05.2011, 11:34  [ТС]     Бинарный файл и структура #6
Когда запускаешь в ошибках она пишет вот это:
1>------ Build started: Project: nml jml, Configuration: Debug Win32 ------
1>Build started 17.05.2011 15:38:02.
1>PrepareForBuild:
1> Creating directory "c:\documents and settings\1\мои документы\visual studio 2010\Projects\nml jml\Debug\".
1>InitializeBuildStatus:
1> Creating "Debug\nml jml.unsuccessfulbuild" because "AlwaysCreate" was specified.
1>ClCompile:
1> kj;.cpp
1>c:\documents and settings\1\мои документы\visual studio 2010\projects\nml jml\nml jml\kj;.cpp(27): error C2628: 'SPARTAK' followed by 'int' is illegal (did you forget a ';'?)
1>c:\documents and settings\1\мои документы\visual studio 2010\projects\nml jml\nml jml\kj;.cpp(93): error C2664: 'qsort' : cannot convert parameter 4 from 'SPARTAK (__cdecl *)(const void *,const void *)' to 'int (__cdecl *)(const void *,const void *)'
1> None of the functions with this name in scope match the target type
1>c:\documents and settings\1\мои документы\visual studio 2010\projects\nml jml\nml jml\kj;.cpp(115): error C2664: 'qsort' : cannot convert parameter 4 from 'SPARTAK (__cdecl *)(const void *,const void *)' to 'int (__cdecl *)(const void *,const void *)'
1> None of the functions with this name in scope match the target type
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:01.46
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
kazak
3033 / 2354 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
17.05.2011, 11:58     Бинарный файл и структура #7
Цитата Сообщение от METZEN Посмотреть сообщение
1>c:\documents and settings\1\мои документы\visual studio 2010\projects\nml jml\nml jml\kj;.cpp(27): error C2628: 'SPARTAK' followed by 'int' is illegal (did you forget a ';'?)
пропущена точка с запятой.

Цитата Сообщение от METZEN Посмотреть сообщение
1>c:\documents and settings\1\мои документы\visual studio 2010\projects\nml jml\nml jml\kj;.cpp(93): error C2664: 'qsort' : cannot convert parameter 4 from 'SPARTAK (__cdecl *)(const void *,const void *)' to 'int (__cdecl *)(const void *,const void *)'
какой-то косяк с функцией compare в вызове qsort. Все ж написано.

Добавлено через 2 минуты
И судя по тому, что compare объявлена сразу после структуры SPARTAK последние две ошибки - следствие первой.
METZEN
0 / 0 / 0
Регистрация: 17.09.2010
Сообщений: 32
17.05.2011, 12:02  [ТС]     Бинарный файл и структура #8
Цитата Сообщение от kazak Посмотреть сообщение
пропущена точка с запятой.


какой-то косяк с функцией compare в вызове qsort. Все ж написано.

Добавлено через 2 минуты
И судя по тому, что compare объявлена сразу после структуры SPARTAK последние две ошибки - следствие первой.
А ты можешь исправить? если не затруднит.
Я первый раз пишу в визуал студии и вообще плохо разбираюсь в этих кодах.
kazak
3033 / 2354 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
17.05.2011, 12:07     Бинарный файл и структура #9
Во первых я не вижу реализации этой функции.
Во вторых
Цитата Сообщение от kazak Посмотреть сообщение
И судя по тому, что compare объявлена сразу после структуры SPARTAK последние две ошибки - следствие первой.
точку с запятой после объявления структуры поставил?
METZEN
0 / 0 / 0
Регистрация: 17.09.2010
Сообщений: 32
17.05.2011, 12:13  [ТС]     Бинарный файл и структура #10
Я бы поставил,но я сейчас на ленте сижу,а тут визуал студио не работает.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2011, 12:20     Бинарный файл и структура
Еще ссылки по теме:

Запиcь в бинарный файл - C++
Доброго всем времени. Пытаюсь написать программу. ” Запишите в бинарный файл последовательность чисел от 0 до 100, затем выведите четные...

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

Запись в бинарный файл - C++
По заданию требуется организовать ввод данных типа структуры в бинарных файл , в соответствии с позицией, задаваемой пользователем. При...

Запись в бинарный файл - C++
Всем привет. Подскажите пожалста как через fstream добавить запись в бинарный файл ? нужно добавить именно В НАЧАЛО , не очищая...


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

Или воспользуйтесь поиском по форуму:
kazak
3033 / 2354 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
17.05.2011, 12:20     Бинарный файл и структура #11
Сначала первый косяк устрани, а там видно будет.
Yandex
Объявления
17.05.2011, 12:20     Бинарный файл и структура
Ответ Создать тему
Опции темы

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