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

массив структур - C++

Восстановить пароль Регистрация
 
help_me_please
0 / 0 / 0
Регистрация: 15.01.2010
Сообщений: 67
15.01.2010, 23:37     массив структур #1
как записать массив структур в файл и как его от туда вытащить?? что прописывать???
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
15.01.2010, 23:46     массив структур #2
C
1
2
3
4
for (i = 0; i < sizearray; i++)
{
   fwrite(&structura[i], sizeof(structura), 1, fileout);
}
Для чтения используй
C
1
fread(&structura[i], sizeof(structura), 1, filein)
help_me_please
0 / 0 / 0
Регистрация: 15.01.2010
Сообщений: 67
15.01.2010, 23:48  [ТС]     массив структур #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
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
#include <STDIO.H>
#include <FSTREAM.H>
#include <MATH.H>
#include <CONIO.H>
 
const n=5; //max kol-vo zapisey
int len=n; //dlina massiva zapisey
FILE *my_file;
struct zapis { int id;
                         char *famili9; //famili9
                         char *im9; //im9
                         char *ot4estvo; //ot4estvo
                         char *vozrast; //vozrast
                         char *studak; //nomer studen4iskogo
                         char *gruppa; //nomer gruppbl
                         char *metro; //bli}|{aihee metro
                         char *telefon; //nomer telefona
                     };
zapis arr[n]; //objavlenie massiva struktur
void add() //dobavlenie el-ta
{
     cout << "Vvedite familiu";
     cin >> arr[len].famili9; //vvod familii
     cout << "Vvedite im9";
     cin >> arr[len].im9; //vvod imeni
     cout << "Vvedite ot4estvo";
     cin >> arr[len].ot4estvo; //vvod ot4estva
     cout << "Vvedite vozrast";
     cin >> arr[len].vozrast; //vvod vozrasta
     cout << "Vvedite nomer studen4eskogo";
     cin >> arr[len].studak; //vvod nomera studen4eskogo
     cout << "Vvedite nomer gruppbl";
     cin >> arr[len].gruppa; //vvod nomera gruppbl
     cout << "Vvedite nomer telefona";
     cin >> arr[len].telefon; //vvod nomera telefona
     cout << "Vvedite bli}|{aihee metro";
     cin >> arr[len].metro; //vvod bli}|{aihego metro
     len++;
}
void del(int id) //udalenie el-ta
{
     for (int i=id;i<len;i++)
     {
          arr[i].id=arr[i+1].id;
          arr[i].famili9=arr[i+1].famili9;
          arr[i].im9=arr[i+1].im9;
          arr[i].ot4estvo=arr[i+1].ot4estvo;
          arr[i].vozrast=arr[i+1].vozrast;
          arr[i].studak=arr[i+1].studak;
          arr[i].gruppa=arr[i+1].gruppa;
          arr[i].metro=arr[i+1].metro;
          arr[i].telefon=arr[i+1].telefon;
     }
     len--;
}
void save()
{
     char *filename;
     cout << "Vvedite filename: ";
     cin >> filename;
     ofstream ofs("filename");
     ofs << arr;
     ofs.close();
     cout << "Save!";
}
/*void load()
{
     char *filename;
     cout << "Vvedite filename: ";
     cin >> filename;
     ifstream ifs("filename");
     while (!ifs.eof())
     {
 
     ifs.close();
     cout << "Load!";
} */
void main()
{
     clrscr();
     add();
     del(0);
     getch();
}
Добавлено через 1 минуту
это пока что есть.. вот то что последнее void load, в чем там ошибка????
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
15.01.2010, 23:56     массив структур #4
Цитата Сообщение от help_me_please Посмотреть сообщение
char *filename;
cout << "Vvedite filename: ";
cin >> filename;
не хорошо
C++
1
2
3
char filename[255];
cout << "Vvedite filename: ";
cin.getline(filename, 254, '\n');
Кстати для fstream'ов надо использовать file.write/file.read функции

Добавлено через 2 минуты
char *filename; - указатель на символ, причем один, если надо в негоего загнать в строку, требуется с начала выделить память под нее. cin не рекомендую использовать для имени файла, т.к. он считывает до первого пробела.
help_me_please
0 / 0 / 0
Регистрация: 15.01.2010
Сообщений: 67
15.01.2010, 23:58  [ТС]     массив структур #5
cin.getline(filename, 254, '\n');

а не cin >>getline(filename, 254, '\n');??
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
15.01.2010, 23:59     массив структур #6
Нет, именно через точку.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
16.01.2010, 00:04     массив структур #7
help_me_please, cin>> - это чтение из потока, а cin. - обращение к методу потока cin
help_me_please
0 / 0 / 0
Регистрация: 15.01.2010
Сообщений: 67
16.01.2010, 00:06  [ТС]     массив структур #8
Load проканало, тока вот теперь сохранение не компелируется
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
16.01.2010, 00:08     массив структур #9
В сохранении таже ошибка.
help_me_please
0 / 0 / 0
Регистрация: 15.01.2010
Сообщений: 67
16.01.2010, 00:24  [ТС]     массив структур #10
C++
1
2
3
4
5
6
{
     clrscr();
     add();
     del(0);
     getch();
}
сюда теперь что то надо вписать я так понимаю?

Добавлено через 10 минут
просто я в программировании вообще нолик(
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1330 / 863 / 50
Регистрация: 02.01.2009
Сообщений: 2,622
Записей в блоге: 1
16.01.2010, 00:27     массив структур #11
Такую структуру не так просто сохранить как кажется..
kazak, твой пример не прокатит..
http://www.cyberforum.ru/visual-cpp/...read21537.html
help_me_please
0 / 0 / 0
Регистрация: 15.01.2010
Сообщений: 67
16.01.2010, 20:31  [ТС]     массив структур #12
о господи((( я ничего не понимаю(( я туп(( что мне конкретно писать и куда??? напишите если не проблемно

Добавлено через 19 часов 45 минут
HELP!!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2010, 21:30     массив структур
Еще ссылки по теме:

C++ «Массив структур»
Ввести массив структур; рассортировать массив в алфавитном порядке C++
C++ Блочная сортировка структур (Отсортировать массив структур по фамилии)

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

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
16.01.2010, 21:30     массив структур #13
Цитата Сообщение от kazak Посмотреть сообщение
C
1
2
3
4
for (i = 0; i < sizearray; i++) 
{
   fwrite(&structura[i], sizeof(structura), 1, fileout); 
}
можно немного по-другому:
C
1
2
3
4
5
6
#include <stdlib.h>
...
if ( fwrite(array_of_structs, sizeof(struct tagname), structs_in_array, fileout) != structs_in_array ){
  fprintf(stderr, "can't write to file!\n");
  exit(1);
}
Добавлено через 5 минут
Цитата Сообщение от ISergey Посмотреть сообщение
Такую структуру не так просто сохранить как кажется..
это да... при таком подходе всё сложнее - запишется по 4 байта ничего уже не значащих адресов... либо в структуре делать строки фиксированной длинны, либо очень хитро читать/записывать из файла/в файл...
Yandex
Объявления
16.01.2010, 21:30     массив структур
Ответ Создать тему
Опции темы

Текущее время: 22:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru