Buna !
Am niste nelamuriri privind o problema.
Aceasta e problema: Trebuie să scrii într-un fișier binar datele introduse de la tastatură ale unor persoane. Datele sunt de tip structură cu char nume și int nota. Trebuie scrise în fișier astfel încât să mai poată fi adăugate informații ulterior, apoi datele trebuie citite si afisate pe ecran. Verifica dacă există dubluri și realizeaza un tablou cu intrările pentru care nu există dubluri și apoi sorteaza tabloul în ordinea descrescătoare a notei.
Tabloul pe care trebuie sa-l construiesc este tot o structura?
Aici este rezolvarea mea (merge pana la aflarea dublurilor, unde imi da eroare ca egalez un integer cu un pointer):
#include<stdio.h>
typedef struct
{
char nume[30];
int nota;
} Elev;
void main()
{ Elev e,a;
FILE *f;
int n,k=0,nr,i,j,ok;
printf("Nr de elevin");
scanf("%d",&n);
if((f=fopen("lucru.bin","wb"))==NULL)
{
puts("Fisierul nu poate fi deschis n ");
exit (1 );
}
while ( k<n )
{ printf("Introduceti nume elevn");
fflush(stdin);
gets(e.nume);
printf("Introduceti nota elevn");
scanf("%d",&e.nota);
fwrite(&e,sizeof( Elev ),1,f);
k++;
}
fclose(f);
if((f=fopen("lucru.bin","rb"))==NULL)
{
puts("Fisierul nu poate fi deschis n ");
exit (1 );
}
while(fread(&e,sizeof(Elev),1,f)==1)
printf("Elevul %s are nota %d n",e.nume,e.nota);
read(&e,sizeof(Elev),1,f);
nr=0;
strcpy(a[nr++].nume,e.nume);
a[nr++].nota=e.nota ;
for(i=1;i<n;i++)
{ fread(&e,sizeof(Elev),1,f);
ok=1;
for(j=0;j<nr;j++)
if(e.nota==a[j].nota)
if(strcmp(e.nume,a[j].nume)==0)
{ok=0; break;}
if(ok==1) a[nr++]=e;
}
for(i=0;i<nr;i++)
printf("Elevul %s are nota %d n",a.nume,a.nota);
}
Va multumesc anticipat!