Salve a tutti! Ho un problema con il seguente programma, ecco la traccia:
____
Scrivere un programma che dato un array di puntatori alla seguente struttura
struct studente {char *nome; char *cognome; int matricola;};
ricerchi un dato studente, utilizzando l’algoritmo di ricerca sequenziale.
____
In pratica ricevo un errore nonappena tento di caricare un nome nella prima cella dell'array... Ecco il codice che ho compilato fino ad ora:
codice:
#include <stdio.h>
typedef struct {
char *nome;
char *cognome;
int matricola;
}studente;
void caricamento_arr(studente arr[],int n);
void visualizza_arr(studente arr[],int n);
studente a[100];
int main () {
int n, scelta;
printf("PROGRAMMA PER LA RICERCA DI UNO STUDENTE\n\n\n");
printf("\nInserire il numero di studenti nella scuola: ");
scanf("%d",&n);
caricamento_arr(a,n);
do {
printf("\nDigitare:\n[0] Per uscire dal programma.\n[1] Per visualizzare gli alunni.\n[2] Per trovare un'alunno della scuola.\nDigitare la propria scelta: ");
scanf("%d",&scelta);
switch (scelta) {
case 0: break;
case 1: visualizza_arr(a,n);
break;
case 2: break;
}
} while (scelta != 0);
return 0;
}
void caricamento_arr(studente arr[], int n) {
int i;
printf("\n");
for (i=0;i<n;i++) {
printf("Inserire il nome dell'elemento in posizione [%d]: ", i);
scanf("%s",arr[i].nome);
printf("Inserire il cognome dell'elemento in posizione [%d]: ", i);
scanf("%s",arr[i].cognome);
printf("Inserire la matricola dell'elemento in posizione [%d]: ", i);
scanf("%d",&arr[i].matricola);
}
}
void visualizza_arr(studente arr[], int n) {
int i;
printf("\nVisualizzazione degli alunni:\n");
for (i=0;i<n;i++) printf("Elemento %d - Nome: %s. Cognome: %s. Matricola: %d.\n",i,a[i].nome,a[i].cognome,a[i].matricola);
}
Non imparerò mai a usare propriamente le stringhe!
Va beh, se qualcuno può chiarirmi i miei errori gliene sarei molto grato! 
EDIT: Ovviamente l'errore è da cercare nella procedura caricamento_arr