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.)