#include <stdio.h>
#include <stdlib.h>
typedef struct stud_
{
char nome[35];
char cognome[35];
int giorno;
int mese;
int anno;
char sesso;
}studente;
void ordina (studente **stud,int n)
{
int i,j;
studente temp;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(stud[i]->anno>stud[j]->anno)
{
strcpy(temp->nome,stud[j]->nome); /*lo stesso errore viene ripetuto da qui*/
strcpy(temp->cognome,stud[j]->cognome);
temp->giorno=stud[j]->giorno;
temp->mese=stud[j]->mese;
temp->anno=stud[j]->anno;
temp->sesso=stud[j]->sesso;
strcpy(stud[i]->nome,stud[j]->nome);
strcpy(stud[i]->cognome,stud[j]->cognome);
stud[i]->giorno=stud[j]->giorno;
stud[i]->mese=stud[j]->mese;
stud[i]->anno=stud[j]->anno;
stud[i]->sesso=stud[j]->sesso;
strcpy(stud[j]->nome,temp->nome);
strcpy(stud[j]->cognome,temp->cognome);
stud[j]->giorno=temp->giorno;
stud[j]->mese=temp->mese;
stud[j]->anno=temp->anno;
stud[j]->sesso=temp->sesso; /* a qui*/
}
}
}
};
void dividi(studente **stud,int n)
{
int i;
FILE *ragazzi, *ragazze;
ragazzi=fopen("ragazzi.txt","w");
ragazze=fopen("ragazze.txt","w");
if(ragazze==NULL||ragazzi==NULL)
{
printf("errore apertura file di uscita");
}
for(i=0;i<n;i++)
{
if(stud->sesso=='M')
{
fprintf(ragazzi,"%s %s %d/%d/%d",stud->nome,stud->cognome,stud->giorno,stud->mese,stud->anno);
}
else if(stud->sesso=='F')
{
fprintf(ragazze,"%s %s %d/%d/%d",stud->nome,stud->cognome,stud->giorno,stud->mese,stud->anno);
}
}
}
int main(int argc, char *argv[])
{
int i,n=0;
char str[100];
studente *stud;
FILE *input;
if(argc!=2)
{
printf("errore linea di comando");
return 0;
}
input=fopen(argv[1],"r");
if(input==NULL)
{
printf("errore apertutra file");
return 0;
}
while(fgets(str,100,input)!=NULL)
{
n++;
}
rewind(input);
stud=malloc(n*sizeof(studente));
for(i=0;i<n;i++)
{
fgets(str,100,input);
sscanf(str,"%s %s %d &d &d %c",stud[i]->nome,stud[i]->cognome,stud[i]->giorno,stud[i]->mese,stud[i]->anno,stud[i]->sesso);
}
ordina(&stud,n);
dividi(&stud,n);
free(stud);
return 0;
}
Questo è il mio codice.
L'errore è sempre
error:invalid tyoe argument of '->' (have 'studente')