Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Списки и сохранение в файл.  (Прочитано 5622 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Berserkx
Гость
« : 22-05-2010 16:00 » new

Надо создать список из структур с инфой про студентов, сохранить в файл и считать. Я сделал как несколько отдельных структур. Надо объеденить их как список и сохранить в файл. Я думаю, надо создать функции и потом просто "позакидывать" туда эти структуры.
К примеру
*STUDENT getStudent() {
  struct STUDENT newStudent;
  newStudent.next = NULL;
  return newStudent;
}


А вот и сама моя прога
Код:
#include<io.h>
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
#include<fcntl.h>
#include<sys/stat.h>
 
struct STUDENT
{char name[150];
int rost,ves,god,rei;
char pol[10];
STUDENT *next;
};
 
/*STUDENT getStudent() {
struct STUDENT newStudent;
newStudent.next = NULL;
return newStudent;
}*/
 
void main(void)
{clrscr();
STUDENT a;char b;
STUDENT *m;
int i=1,k,f2;
FILE * f1 = fopen("D:\\f1.dat","w");
metka:clrscr();
printf("<<--- Vvedite informaciyu ob %i-om studente --->>\n",ftell(f1)/sizeof(a)+1);
printf("FIO : ");
gets(a.name);
printf("Rost : ");
scanf("%i",&a.rost);
printf("Ves : ");
scanf("%i",&a.ves);
printf("God rojdeniya : ");
scanf("%i",&a.god);
printf("Pol M/W : ");
scanf("%s",&a.pol);
printf("Reiting : ");
scanf("%i",&a.rei);
fwrite(&a,sizeof(a),1,f1);
printf("Vvesti eshe (Y/N) : ");
b=getch();scanf("%c",b);
if (b=='y') goto metka;
k=ftell(f1)/sizeof(a);
fclose(f1);
f2=open("f1.dat",O_RDONLY);
rewind(f1);
 
for(i=0;i<k;i++)
{
m=&a;
read(f2,m,sizeof(a));
clrscr();
printf("<<--- Student # %i --->>\n",i+1);
printf("FIO : %s\n",a.name);
printf("Rost : %i\n",a.rost);
printf("Ves : %i\n",a.ves);
printf("God rojdeniya : %i\n",a.god);
printf("Pol : %i\n",a.pol);
printf("reiting : %i\n",a.rei);
getch();
}
 
fclose(f1);
}

« Последнее редактирование: 23-05-2010 02:09 от Алексей1153++ » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 23-05-2010 02:13 » 

я бы писал в файл в двоичном режиме. Сначала нужно указать размер структуры (а вдруг структура потом поменяется ?) и количество элементов в файле. Тогда обеспечиваем совместимость версий - если структура увеличилась, то читаеп первые "половинки", а новая часть остаётся по умолчанию. Если структура уменьшилась, то читаем только актуальную длину, оставляя "хвостики" непрочитанными.
Записан

Berserkx
Гость
« Ответ #2 : 23-05-2010 05:50 » 

Не сказал: структура состоит из 6 элементов имя, рост, вес, год, рождения, пол, рейтинг.
И менятся она не может по условию.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines