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

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

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

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

17.05.2011, 10:50. Просмотров 603. Ответов 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();
         }
  }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2011, 10:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Бинарный файл и структура (C++):

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

Записать в бинарный файл массив объектов Student (бинарный файловый ввод/вывод) - C++
Здравствуйте. Стоит задача записать в бинарный файл массив объектов student: class student { string firstname,lastname, group; ...

Не получается прочесть правильно текстовый файл в структуру а затем в бинарный файл - C++
Нужно просто прочесть файл в структуру данных а потом оттуда записать в бинарный файл Вот как выглядит текстовый файл: 11122 Mary...

Данные записать в файл F1.txt, затем прочитать оттуда, обрабатывались и записывались в бинарный файл F2.bin с проверкой - C++
Никак не получается отладить в BC++ 3.1. Как сделать в классах так, чтобы введённые данные записывались в файл F1.txt, затем читались...

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

С++ Бинарный файл - C++
Нужно написать программу на visual studio 10 c++ которая записивала числа в файл, введеные числа. по несколько цифр в строчку. всего должно...

10
Aneron
158 / 157 / 12
Регистрация: 20.04.2010
Сообщений: 570
17.05.2011, 10:53 #2
Debug тебе в помощь
0
absokolov
30 / 30 / 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();
         }
  }
А на что ругается то?
0
METZEN
0 / 0 / 0
Регистрация: 17.09.2010
Сообщений: 32
17.05.2011, 11:07  [ТС] #4
много на что.В часности на compare
0
absokolov
30 / 30 / 1
Регистрация: 10.05.2011
Сообщений: 120
17.05.2011, 11:23 #5
Цитата Сообщение от METZEN Посмотреть сообщение
много на что.В часности на compare
Так у вас эта функция должна возвращать инт! А у вас она и не расписана!

P.S. Написал то что увидел! Читать весь код просто лень, точно так же как и вам лень скинуть сюда ошибки!
0
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 ==========
0
kazak
3051 / 2372 / 160
Регистрация: 11.03.2009
Сообщений: 5,437
Завершенные тесты: 1
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 последние две ошибки - следствие первой.
0
METZEN
0 / 0 / 0
Регистрация: 17.09.2010
Сообщений: 32
17.05.2011, 12:02  [ТС] #8
Цитата Сообщение от kazak Посмотреть сообщение
пропущена точка с запятой.


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

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

Бинарный файл - C++
Ошибка strcpy(rb.dr, DateTimePicker1-&gt;Date.c_str()); Не могу понять, что за ошибка)

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

Бинарный файл - C++
Привет всем:) Помогите пожалуйста разобраться! Задача: Дан символьный файл. Определить входит ли в него сочетание abcdefgh. Найти число...

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


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

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

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