Come dice il titolo: come faccio a passare un array di struttura ad una funzione?
Ho scritto questo codice ma non funziona.
codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LUNGHEZZA_MASSIMA 25
typedef struct{
char Cognome[LUNGHEZZA_MASSIMA+1], Nome[LUNGHEZZA_MASSIMA+1];
int Eta;
}Tipo;
void mostra (struct array[], int i);
int main(void)
{
Tipo DatiPersona[9999];
int i = 0;
char c;
FILE *fp;
fp = fopen("file.txt","r+");
do{
fscanf(fp, "%s %s %d", DatiPersona[i].Cognome, DatiPersona[i].Nome, &DatiPersona[i].Eta);
i+=1;
} while((c = getc(fp)) != EOF);
char codice;
for( ;; ){
printf("\n");
printf("Cosa desidera fare?\n");
printf("Vedere l'elenco(m)\n");");
printf("Esci (q)\n");
scanf("%c", &codice);
while (getchar() != '\n');
switch (codice){
case 'm': mostra(DatiPersona[9999], i);
break;
case 'q': return 0;
default: printf("Codice errato\n");
}
}
fclose(fp);
}
void mostra (struct array[], int i){
int z;
char c;
printf("\n");
for(z=0; z<i-1;z++){
printf("| %d | %s | %s | %-4d |\n",z+1, DatiPersona[z].Cognome, DatiPersona[z].Nome, DatiPersona[z].Eta);
};
}
codice:
ERRORI
dati.c:12: error: array type has incomplete element type
dati.c:12: warning: ‘struct array’ declared inside parameter list
dati.c:12: warning: its scope is only this definition or declaration, which is probably not what you want
dati.c:32:47: warning: missing terminating " character
dati.c: In function ‘main’:
dati.c:32: error: missing terminating " character
dati.c:38: error: type of formal parameter 1 is incomplete
dati.c: At top level:
dati.c:49: error: array type has incomplete element type
dati.c:49: warning: ‘struct array’ declared inside parameter list
dati.c: In function ‘mostra’:
dati.c:49: error: parameter name omitted
dati.c:57: error: ‘DatiPersona’ undeclared (first use in this function)
dati.c:57: error: (Each undeclared identifier is reported only once
dati.c:57: error: for each function it appears in.)