rendered paste body#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 5
struct Foititis {
char am[10];
char epi[20];
char ono[20];
float mo;
};
struct IFoititis {
char am[10];
int dief;
};
main () {
struct Foititis f;
struct IFoititis *fi, temp;
int pl,m=0,i,j,synexeia;
FILE *dataf,*indexf;
dataf=fopen("foitites.dat","rb+");
if(!dataf) {
dataf=fopen("foitites.dat","wb");
indexf=fopen("foitites.ndx","wb");
fclose(indexf);
pl=0;
}
else {
indexf=fopen("foitites.ndx","rb");
fseek(indexf,0,SEEK_END);
pl=ftell(indexf) /sizeof(struct IFoititis);
fclose(indexf);
fseek(dataf,0,SEEK_END);
}
m=pl;
fi=malloc((pl+N)*sizeof(struct IFoititis));
printf("\n\nEISAGWGI EGGRAFON\n\n");
do {
printf("\nEisagogi am: ");
scanf("%S", &f.am);
printf("\nEisagwgi epithetou: ");
scanf("%s", &f.epi);
printf("\nEisagwgi onomatos: ");
scanf("%s", &f.ono);
printf("\nEisagwgi mesou orou: ");
scanf("%f", &f.mo);
fwrite(&f,sizeof(struct Foititis),1,dataf);
strcpy(fi[m].am,f.am);
fi[m].dief=m;
m++;
printf("\n\n Thelete nea eisagwgi (1=NAI, 0=OXI):");
scanf("&d", &synexeia);
} while( synexeia==1 && m<pl+N);
fclose(dataf);
indexf=fopen("foitites.ndx","rb+");
fseek(indexf,0,SEEK_END);
for (i=pl; i<m; i++)
fwrite(&fi[i],sizeof(struct IFoititis), 1, indexf);
fclose(indexf);
indexf= fopen("foitites.ndx","rb");
fseek(indexf,0,SEEK_END);
pl=ftell(indexf)/sizeof(struct IFoititis);
fseek(indexf,0,SEEK_SET);
fread(&fi[0],sizeof(struct IFoititis),pl,indexf);
fclose(indexf);
selection_sort(fi,pl);
indexf=fopen("foitites.ndx","wb");
fwrite(&fi[0],sizeof(struct IFoititis),pl,indexf);
fclose(indexf);
free(fi);
}
void selection_sort(struct IFoititis x[],int D) {
int i,j,t;
struct IFoititis temp;
for (i=0; i<D-1; i++) {
t=i;
for (j=i+1; j<D; j++)
if(strcmp(x[t].am,x[j].am)>0)
t=j;
temp=x[i];
x[i]=x[t];
x[t]=temp;
}
}