@oregon, oggi è stata una giornata dura... se mi vuoi dare una mano ti ringrazio, altrimenti, per favore, risparmiami l'ironia.
@ Weierstrass alla fine così funziona (cioè come mi hai suggerito):
void funzionestampa(studente st[]){
FILE *fp1;
fp1=fopen("testennesimo.dat","r");
int j, i=0;
studente * st_ptr = &st[0];
if(!fp1) printf("Impossibile aprire il file");
else
{
do{
fscanf(fp1, "%s %s %d %f %s ", st[i].nomeStudente, st[i].cognomeStudente, &st[i].numero, &st[i].voto, st[i].materia);
printf("%s %s %d %f %s ", st_ptr->nomeStudente, st_ptr->cognomeStudente, st_ptr->numero, st_ptr->voto, st_ptr->materia);
i++; st_ptr++;
}while(!feof(fp1));
//for(j=0; j<i; j++)
//printf("%s %s %d %f %s ", st[j].nomeStudente, st[j].cognomeStudente, st[j].numero, st[j].voto, st[j].materia);
}
fclose(fp1);
}
Però ero convinto di poter utilizzare direttamente st scrivendo st++; Cioè ero convinto di poter utilizzare il nome del vettore come puntatore;
Ne ero convinto perché ho trovato questo esercizio:
Commenta i seguenti tre punti
int a[]={1,2,3};
int *ptr=a;
a=a+2;
E l'ultima espressione mi sembrava un chiaro uso dell'aritmetica dei puntatori:
Scusatemi se non sono stato chiaro!