Форум С++

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

Автор: AI\EKCAH^P   (29.05.2009 в 19:24)
Используя функции и режим меню, создать файл из 10 структур, просмотреть файл, добавить в файл новую информацию , применяя режим прямого доступа.
Структура имеет вид: фамилия спортсмена, его номер, количество набранных очков. Поменять местами в файле записи о первых двух спортсменах.
Все сделал, а как поменять местами в файле записи о первых двух спортсменах понятия не имею. Помогите кто может. Заранее благодарен.
#include<stdio.h>
#include<conio.h>
#include<string.h>
 
struct sport{char name[10];int number;int kol;}sp;
void input(FILE *);
void print(FILE *);
void app(FILE *);
void find(FILE *);
main()
 { char c;
 FILE *tf;
 while (1)
 {
 puts("1-novuy fail");
 puts("2-prosmotr faila");
 puts("3-dobavlenie v fail");
 puts("4-poisk i izmenenie");
 puts("0-vyhod");
 c=getch();
 switch(c)
 {case '1':input(tf); break;
  case '2':input(tf);break;
  case '3':input(tf);break;
  case '4':input(tf);break;
  case '0':input(tf);break;
  default : puts("nevernuy regim");
  }
  }
  }
  void input(FILE *tf)
   {char ch;
   tf=fopen("FILE1.dat","wb");
   printf("\n vvedite informaciu o sportcmene \n");
   do
   { printf("\n familiya: "); scanf("%s",sp.name);
   printf(" nomer: "); scanf("%d",&sp.number);
   printf(" kolichestvo ochkov: "); scanf("%d",&sp.kol);
   fwrite(&sp,sizeof(sp),1,tf);
   printf("\n Zakonchity ? y/n");
   ch=getch();
   }
   while (ch != 'y');
   fclose(tf);
   }
   void print(FILE*tf)
   { int i; 
   tf=fopen("file.dat","rb");
   i=1;
   fread(&sp,sizeof(sp),1,tf);
   while(!feof(tf))
   {printf("\n %3d familiya %10s number %6d kolichestvo ochkov %4d ",i,sp.name,sp.number,sp.kol);
   fread(&sp,sizeof(sp),1,tf);
   i++;
   }
   getch();
   }
   void app(FILE *tf)
   {char ch;
   tf=fopen("file1.dat","ab");
   printf("\n vvedite informaciu o sportcmene \n");
   do
   { printf("\n familiya: "); scanf("%s",sp.name);
   printf(" nomer: "); scanf("%d",&sp.number);
   printf(" kolichestvo ochkov: "); scanf("%d",&sp.kol);
   fwrite(&sp,sizeof(sp),1,tf);
   printf("\n Zakonchity ? y/n");
   ch=getch();
   }
   while (ch != 'y');
   fclose(tf);
   }
   void FIND(FILE*tf)
   {char c, sport[10];
   long int i;
   tf=fopen("file1.dat","rb+");
   puts(" Familiya sportcmena: ");
   gets(sport);
   fread(&sp,sizeof(sp),1,tf);
   while (!feof(tf))
   {if (strcmp(sp.name,sport)==0)
   {printf(" familya %10s number %6.2d kolichestvo ochkov %d",sp.name,sp.number,sp.kol);
   printf("/n Izmenity ? y/n");
   c=getch();
   if (c=='y')
   {printf("\n kolichestvo: "); scanf("%d",&sp.kol);
   printf("\n number: "); scanf("%d",&sp.number);
   i=sizeof(sp);
   fseek(tf,-i,1);
   fwrite(&sp,sizeof(sp),1,tf);
   }
   }
   fread(&sp,sizeof(sp),1,tf);
   }
   fclose(tf);
   }
   


Ваше имя:

Пароль:

Цитировать

Используйте тэги для выделения текста:
Код: [code][/code]
Жирный: [b][/b]
Наклонный: [i][/i]
URL: [url][/url]

Сообщение:

Прикрепить: