codice:
#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
#include <string.h> 
typedef struct{ char nome[]; 
char cognome[]; }Giocatore; 
void caricagiocatori(Giocatore * giocatori,int dim);
void stampagiocatori(Giocatore giocatori[],int dim); 

int main(){ 
int dim; 
printf("inserisci numero giocatori\n"); 
scanf("%d", &dim); 
Giocatore giocatori[dim]; 
caricagiocatori(giocatori,dim); 
stampagiocatori(giocatori,dim); 
system("PAUSE"); 
return 0; } 


void caricagiocatori( Giocatore * giocatori,int dim){ 
int i; 

/*char nom[13];     qui avevo provato con la funzione strncpy con scarsi risultati
char cogn[14]; */


for (i=0;i<dim;i++){ 
printf("inserisci nome giocatore\n"); 
scanf("%s",giocatori[i].nome); 
printf("inserisci cognome giocatore\n"); 
scanf("%s",giocatori[i].cognome); 
} 

}

 
void stampagiocatori(Giocatore giocatori[],int dim){ 
int i; 
for (i=0;i<dim;i++){ 
printf("%s %s\n", giocatori[i].nome, giocatori[i].cognome); } 
}
sto cercando di creare una funzione per caricare un array di struct di tipo giocatore, ma inseriti i nomi e i cognomi la funzione mi prende come valido solo l'ultimo inserimento, cioè se ad esempio inserisco aa bb cc dd mi stampa 4 volte dd, non capisco dove sbaglio.