Salve ragazzi, ho un problema nel stampare a video questo codice:
Non mi fa inserire il nome ma solo il cognome e il numero di matricola ma subito dopo i blocca.... come posso uscirne fuori?codice:#include <stdio.h>#include <stdlib.h> #include <string.h> #define SIZE 80 struct element { char name[SIZE]; char surname[SIZE]; int matnumber; struct element *next; }; void menu(); void list(struct element *list_head); struct element *insert(struct element *list_head); //struct element *sortbyname(struct element *list_head); //struct element *sortbymatnumber(struct element *list_head); int main () { struct element *list_start=NULL; int comando; do{ menu(); printf("\nComando: "); scanf("%d",&comando); switch(comando) { case 1: { list_start=insert(list_start); break; } /* case 2: { list_start=sortbyname(list_start); break; } case 3: { list_start=sortbymatnumber(list_start); break; }*/ case 4: { list(list_start); break; } } return 0; } while(true); } struct element *insert(struct element *list_head){ struct element *newnode, *temp; int x; temp=list_head; if (list_head!=NULL) while(temp->next!=NULL) temp=temp->next; do { newnode=(struct element*)malloc(sizeof(struct element)); /*if (newnode==NULL){ printf("ERROR"); EXIT(FAILURE_EXIT); }*/ if(list_head==NULL) { printf("Inserire nome:\n "); fgets(newnode->name,SIZE,stdin); printf("\nInserire cognome: "); fgets(newnode->surname,SIZE,stdin); printf("Inserire Numero matricola'"); scanf("%d",&newnode->matnumber); newnode->next=NULL; list_head=newnode; temp=temp->next; } else { printf("Inserire nome:\n "); fgets(newnode->name,SIZE,stdin); printf("\nInserire cognome: "); fgets(newnode->surname,SIZE,stdin); printf("Inserire Numero matricola'"); scanf("%d",&newnode->matnumber); newnode->next=NULL; temp->next=newnode; temp=temp->next; } printf("Vuoi registrare un altro studente? (premere 1 per risposta affermativa)"); scanf("%d",&x); } while (x==1); return list_head; } void menu(){ printf("|||||||||||||||||||||"); printf("\n1)Registrare studente"); printf("\n4)Visualizza lista"); printf("|||||||||||||||||||||"); } void list (struct element *list_head) { struct element *list_pointer =list_head; printf("\nNOME \t COgnome \t N.Matricola "); while(list_pointer != NULL){ printf("%s \t %s \t %d\n", list_pointer->name,list_pointer->surname,list_pointer->matnumber); list_pointer = list_pointer->next; } printf("\nEND") ; }
grazie in anticipo.

Rispondi quotando