Salve,nel programma che sto scrivendo l'obiettivo è di permettere di poter inserire i dati di uno studente,poi di poterli stampare e di poter effettuare una ricerca per nome. Il problema è che funziona tutto tranne quando l'utente nel menù inserisce il numero due,in quel caso la funzione ricerca non funziona non facendo inserire il nome dello studente che si vuole cercare. Come potrei risolvere?Grazie in anticipo! Questo è il codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
short int menu();
typedef struct{
char nome[20];
char cognome[20];
char corso[20];
short int eta;
} studente;
typedef struct{
studente elementi[5];
short int num_studenti;
} lista;
lista inserimento_lista();
void stampa_lista(lista L);
void ricercaf();
int main(){
lista l;
short int scelta;
char ricerca[10];
do{
scelta= menu();
switch(scelta){
case 1:
system("clear");
printf("***INSERIMENTO STUDENTI***\n");
l = inserimento_lista();
printf("\n");
break;
case 2:
system("clear");
printf("***RICERCA STUDENTE***\n");
ricercaf();
break;
case 3:
system("clear");
printf("***ELENCO STUDENTI***\n");
stampa_lista(l);
break;
default:
return 0;
}
}while(scelta != 4);
}
void ricercaf(){
lista ll;
char temp[10];
fflush(stdin);
printf("INSERISCI IL NOME DELLO STUDENTE: ");
fgets(temp,10,stdin);
temp[strlen(temp)-1] = '\0';
for (int i=0;i<ll.num_studenti;i++){
if (strcmp(temp,ll.elementi[i].nome) == 0){
printf("STUDENTE N.%d\n",i+1);
printf("NOME: %s\n",ll.elementi[i].nome);
printf("COGNOME: %s\n",ll.elementi[i].cognome);
printf("CORSO: %s\n",ll.elementi[i].corso);
printf("ETÀ: %d\n",ll.elementi[i].eta);
}
}
puts("");
}
void stampa_lista(lista L){
for(int i=0;i<L.num_studenti;i++){
printf("STUDENTE N.%d\n",i+1);
printf("NOME: %s\n",L.elementi[i].nome);
printf("COGNOME: %s\n",L.elementi[i].cognome);
printf("CORSO: %s\n",L.elementi[i].corso);
printf("ETÀ: %d\n",L.elementi[i].eta);
}
puts("");
}
lista inserimento_lista(){
lista list;
int n;
printf("Quanti studenti vuoi inserire? ");
scanf("%d",&list.num_studenti);
puts("");
fflush(stdin);
for(int i=0;i<list.num_studenti;i++){
printf("INSERISCI IL NOME: ");
scanf("%s",&list.elementi[i].nome);
printf("INSERISCI IL COGNOME: ");
scanf("%s",&list.elementi[i].cognome);
printf("INSERISCI IL CORSO: ");
scanf("%s",&list.elementi[i].corso);
printf("INSERISCI L'ETÀ: ");
scanf("%d",&list.elementi[i].eta);
puts("");
}
fflush(stdin);
return list;
}
short int menu(){
int scelta;
printf("***GESTIONE STUDENTI***\n");
printf("[1] INSERISCI STUDENTE;\n");
printf("[2] CERCA STUDENTE;\n");
printf("[3] STAMPA LISTA STUDENTI;\n");
printf("[4] ESCI!\n");
do{
printf("SCELTA: ");
scanf("%d",&scelta);
if(scelta<1 || scelta>4){
printf("SCELTA NON VALIDA!\n");
}
}while(scelta<1 || scelta>4);
return scelta;
}