Vedo che ancora hai un po' di confusione ...
Intanto il codice corretto
codice:
#include <stdio.h>
#define MAX 2 // E' meglio utilizzare il maiuscolo per le costanti
typedef struct
{
char nome[30];
char cognome[30];
} persona;
persona persone[MAX];
// il nome usato per l'argomento non deve essere uguale a quello
// della variabile passata ... qui ho usato arg
void stampa_nome(int arg);
void prendi_nome(int arg);
void stampa_cognome(int arg);
void prendi_cognome(int arg);
void main()
{
int i; // questa variabile puo' essere dichiara nel main
for (i=0; i<MAX; ++i)
{
// quando richiami le funzioni, devi passare gli argomenti attuali
// tramite variabili e/o espressioni compatibili ...
prendi_nome(i);
prendi_cognome(i);
stampa_nome(i);
stampa_cognome(i);
}
}
// il nome dell'argomento non deve essere uguale
// a quello della variabile usata per passare il valore
// Ho usato arg ed e' solo importante che arg sia
// usato all'interno della funzione ... il compilatore
// provvedera' a copiare il valore di i in quello di arg
void stampa_nome(int arg)
{
printf("il nome utente è: %s\n", persone[arg].nome);
}
void prendi_nome(int arg)
{
printf("inserisci nome utente\n");
scanf ("%s", persone[arg].nome);
}
void stampa_cognome(int arg)
{
printf("il cognome utente è: %s\n", persone[arg].cognome);
}
void prendi_cognome(int arg)
{
printf("inserisci cognome utente\n");
scanf ("%s", persone[arg].cognome);
}
... leggi anche le note accanto alle righe ...
E leggi un buon libro per le basi di C ...