Sì ho dimenticato di scrivere un \ ma nel programma lo avevo messo bene. In pratica l'errore consiste nel fatto che non mi permette di inserire correttamente le stringe.
Ti copio tutto il sorgente così magari è più facile capire l'errore:
codice:
#include <stdio.h>
#define MAX 10
struct automobili {
char marca[25];
char modello[25];
int unita;
};
struct automobili auto_array[MAX];
int num_auto=0;
int Menu();
int Inserimento(int);
void Visualizzazione(int, struct automobili *);
int main(){
int scelta=-1;
while (scelta!=0) {
scelta=Menu();
if (scelta==1){
num_auto = Inserimento(num_auto);}
else if(scelta==2) Visualizzazione(num_auto, auto_array);
}
printf("\nArrivederci\n");
}
int Menu(){
int n;
do{
printf("\t-----------------------------------\n");
printf("\t-------------Archivio--------------\n");
printf("\t-----------------------------------\n\n");
printf("\t 1. Inserire una nuova autovettura\n");
printf("\t 2. Visualizzare archivio\n");
printf("\t 0. Uscire\n\n");
printf("\t Cosa vuoi fare?\n \t>>");
scanf("%d",&n);
}while (n!=0 && n!=1 && n!=2);
return n;
}
void Visualizzazione(int pos, struct automobili *p){
int i; //contatore auto
char pausa;
if (pos==0) {
printf("\nIn questo momento non ci sono macchine in garage.\n\n");
scanf("%c", &pausa);
}
else{
for(i=0; i<pos; i++){
printf("\n %d° macchina:\n",i+1);
printf("\tMarca:\t %s", p->marca);
printf("\n\tModello: %s", p->modello);
printf("\n\tUnità : %d \n", p->unita);
p++;
scanf("%c", &pausa);
}
printf("\n\tPremi un tasto per tornare al menu\n\n\n\n");
scanf("%c", &pausa);
}
}
int Inserimento(int pos){
char pausa;
if (pos<MAX) {
printf("\n Inserire i dati della nuova auto\n");
printf("\tMarca:");
fgets(auto_array[pos].marca,25,stdin);
printf("\n\tModello:");
fgets(auto_array[pos].modello,25,stdin);
printf("\n\tQuante:\t\t");
scanf("%d", &auto_array[pos].unita);
pos++;
printf("\n\tPremi un tasto per tornare al menu\n");
scanf("%c", &pausa);
return(pos);}
else{
printf("Errore, l'archivio è pieno!");
scanf("%c", &pausa);
return(pos);}
}