Salve, ho un problema e vorrei sapere come affrontarlo.
Nel seguente codice:
Devo implementare un archivio di utenti (nome...ecc.), ogni utente deve poter inserire un massaggio( devo usare una stringa e non posso utilizzare fopen/fclose…).
Come noterete nello switch devo anche poter dare la possibilità ad ogni utente di poter visualizzare tutti i messaggi di un utente e di eliminare un massaggio.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 120
#define LEN 100
typedef struct {    
    char nome[MAX];
    char cognome[MAX];
    char sesso[MAX];
    int giorno;
    char mese[MAX];
    int anno;
    } Utente;
typedef struct {
    Utente elementi[LEN];
    int num_utenti;
    }Lista ;
typedef struct {
    char autore[MAX];
    char testo[MAX];
    int mi_piace;
    char destinatario[MAX];
} Messaggio;
int menu();   
Lista Inserimento_Utente ();
void Stampa_Elenco (Lista utent);
Messaggio Inserimento_Messaggio (Lista utent);
int main()
{
    int scelta;
    Lista L;
    while (scelta=menu()){ // Dopo che l'utente fa un'operazione questo permette di far comparire di nuovo il menu
          switch(scelta){
              case 1:
                  system ("CLS");
                  printf("***INSERIMENTO UTENTE***\n\n");
                  L=Inserimento_Utente();
                  printf("\n");
                  Stampa_Elenco(L);
                  system ("PAUSE");
                 break;
              case 2:
                  system ("CLS");
                  printf("***INSERIMENTO MESSAGGIO***\n\n");
                  system ("PAUSE");
                 break;
              case 3:
                  system ("CLS");
                  printf("***VISUALIZZAZIONE MESSAGGIO***\n\n");
                  system ("PAUSE");
                 break;
              case 4:
                  system ("CLS");
                  printf("***ELIMINA MESSAGGIO***\n\n");
                  system ("PAUSE");
                 break;
              case 0:  return 0;
           }
        }
    return 0;
}
int menu(){  //Funzione per il menu
     int scelta;
     printf("***GESTIONE UTENTE***\n");
     printf("[1] Inserisci Utente\n");
     printf("[2] Inserisci Messaggio\n");
     printf("[3] Visualizza Tutti i Messaggi  Utente\n");
     printf("[4] Elimina Messaggio \n");
     printf("[0] Esci\n\n");
     printf(" Scelta: ");
     scanf("%d",&scelta);
     while (scelta<0 || scelta>4){    // controllo scelta
        printf("Scelta non valida\n");
        printf(" Scelta: ");
        scanf("%d",&scelta);
        return scelta;//Rifa l'operazione della scelta
        }
        return scelta;
        system ("PAUSE"); 
}
Lista Inserimento_Utente(){
      Lista utent;
      int i;
      printf("Quanti Utenti vuoi inserire?  ");
      scanf("%d",& utent.num_utenti);
      fflush(stdin); 
      for(i=0;i<utent.num_utenti;i++){
        printf("Inserisci Nome ");
        gets(utent.elementi[i].nome);
        printf("Inserisci Cognome ");
        gets(utent.elementi[i].cognome);
        printf("Inserisci Sesso ");
        gets(utent.elementi[i].sesso);
        printf("Inserisci Giorno ");
        scanf("%d",& utent.elementi[i].giorno);
        fflush(stdin);
        printf("Inserisci Mese ");
        gets(utent.elementi[i].mese);
        printf("Inserisci Anno ");
        scanf("%d",& utent.elementi[i].anno);
        fflush(stdin);
      }
      return utent;
}
void Stampa_Elenco (Lista utent){
    int i;
    for (i=0;i<utent.num_utenti;i++){
        printf("Utente n.%d\n",i+1); //Altrimenti stampa Utente n.0 invece di n.1
        printf("Nome %s\n",utent.elementi[i].nome);
        printf("Cognome %s\n",utent.elementi[i].cognome);
        printf("Sesso %s\n",utent.elementi[i].sesso);
        printf("Giorno %d\n",utent.elementi[i].giorno);
        printf("Mese %s\n",utent.elementi[i].mese);
        printf("Anno %d\n\n",utent.elementi[i].anno);  // Doppio \n\n per stampa ordinata di più utenti
    }
}
Messaggio Inserimento_Messaggio (Lista utent){
    int i;
    int esito;
    printf("Vuoi inserire un messaggio? Digitare 1 per affermazione/ 0 per negazione \n");
    scanf("%d",&esito);
    if(esito==1){
        printf("inserisci messaggio\n");
    }
}
Sono bloccato al case 2 dello switch , vorrei implementare la funzione: Messaggio Inserimento_Messaggio (Lista utent).
Ho messo all'interno Lista utent per poter interagire con la lista utenti che sono stati inseriti.
Detto questo vorrei sapere come devo procedere per poter dare l'opportunità a ogni utente di poter inserire un messaggio, quindi suppongo che dovrei interagire sia con la struct messaggio che con la struct utente, purtroppo non ho trovato esempi simili e quindi non saprei come procedere.
Ci tengo a dire che il programma non è allo stato ottimale, però richiedo l'assistenza per il case 2.
Grazie a chi mi aiuterà e spero di aver esposto il problema nel miglior modo possibile. Attendo risposta.