Ho modificato un po il codice e ora funziona...ma nn capisco xke mi fa inserire ma quando gli chiedo di visualizzare mi ritorna al menu.....
codice:
#include<stdio.h>
#include<string.h>
#define N 10
typedef struct{ char Nome[20];
char Cognome[20];
int Eta;
int flag;
} Persona;
void inserisci(Persona *archivio1,int *i);
void visualizza(Persona *archivio2,int *i);
int main()
{
Persona archivio[N];
int i;
int cnt_persona=0;
int scelta;
for(i=0;i<N;i++) archivio[i].flag=0;
do{ printf("%s\n%s\n%s\n", "**************Menu************",
"0 per terminare,1 per inserire",
"2 per visualizzare");
scanf("%d",&scelta);
switch(scelta){
case 1: inserisci(archivio,&cnt_persona);break;
case 2: visualizza(archivio,&cnt_persona);break;
default: if(scelta!=0) printf("Hai sbagliato numero riprova\n");
}
}while(scelta != 0);
return 0;
}
void inserisci(Persona *archivio1,int *i)
{ int j=0;
j= *i;
if(j<N)
{
if(archivio1[j].flag==0)
{
printf("Inserisci Nome e Cognome\n"); scanf("%s%s",archivio1[j].Nome,archivio1[j].Cognome);
printf("Inserisci eta'\n");
scanf("%d",&archivio1[j].Eta);
archivio1[j].flag=1;
j++;
}
}
else printf("Mi dispiace archivio pieno\n");
}
void visualizza(Persona *archivio2,int *i)
{ int j=0;
j= *i;
for(j=0;j<N;j++)
if(archivio2[j].flag==1)
{
printf("Persona #%d\nNome:%s\tCognome:%s\tEta:%d", j+1,archivio2[j].Nome,archivio2[j].Cognome,archivio2[j].Eta);
putchar('\n');
}
}