Passaggio variabili strutturate a una funzione

di il
7 risposte

Passaggio variabili strutturate a una funzione

Ho un problema nel passaggio di una variabile strutturata all'interno di una funzione.
Inizialmente ho dichiarato con una typedef la variabile strutturata giornale, composta dal numero di pagine e da un'altra variabile strutturata pagina.
Per poter usare il tipo di variabile giornale, le ho dato un nome, Giornale (senza usare molta fantasia). Quest'istruzione fatta al di fuori dal main fa risultare Giornale una variabile globale, cosa che io non voglio.
Per poter ovviare al problema, dichiaro "giornale Giornale;" all'interno del main, ma come la passo alle varie funzioni con le quali devo operare? Ho provato con i puntatori ma non ci riesco.
Grazie in anticipo.

7 Risposte

  • Re: Passaggio variabili strutturate a una funzione

    Mostra tutto il codice di cui hai parlato
  • Re: Passaggio variabili strutturate a una funzione

    Questa è la definizione delle variabili strutturate:

    typedef
    struct{
    char titolo [MAXDIMSTRINGHE];
    char corpo [MAXDIMSTRINGHE];
    }Articolo;

    typedef
    struct{
    int numeroPagina;
    Articolo articolo[MAXNUMARTICOLI];
    }Pagina;

    typedef
    struct{
    int numeropaginetotali;
    Pagina pagina[MAXNUMPAGINE];
    }giornale;

    Questa è la struttura del main:

    int main(){
    giornale Giornale;
    int i,j, numeropaginetotali;
    char TmpStr[MAXDIMSTRINGHE];
    char nomegiornale[MAXDIMSTRINGHE];
    printf("Inserire nome giornale:");
    fgets(TmpStr,MAXDIMSTRINGHE,stdin);
    strcpy(nomegiornale, TmpStr);
    funzioneScrittura(); //Richiamo della funzione di scrittura
    system("PAUSE"); //Comando di attesa
    funzioneLettura(nomegiornale); //Richiamo della funzione di lettura
    }

    Come faccio a passare Giornale alle funzioni di scrittura e lettura in modo che quest'ultime la utilizzino?
  • Re: Passaggio variabili strutturate a una funzione

    Per puntatore ... no ?
  • Re: Passaggio variabili strutturate a una funzione

    Ho provato con queste righe di codice:

    giornale *G;
    G=&Giornale;
    funzioneScrittura(&Giornale);

    E nella struttura della funzione ho scritto:
    void funzioneScrittura(*G){....ecc

    Ma non va, quindi ho sbagliato qualcosa.
  • Re: Passaggio variabili strutturate a una funzione

    Delle prime tre righe usa solo la terza. Nella funzione scriverai

    funzione(giornale *G)

    e dovrebbe andare

    Altrimenti mostra il codice del main e della funzione e soprattutto dicci gli errori
  • Re: Passaggio variabili strutturate a una funzione

    Ho fatto come hai detto e l'errore viene fuori quando all'interno della funzione devo usare la variabile Giornale.numeropaginetotali o un'altra simile.
    In function 'void funzioneScrittura(giornale*)':'Giornale was not declared in this scope'
    Stessa cosa per la lettura.
  • Re: Passaggio variabili strutturate a una funzione

    Dentro la funzione hai il puntatore che hai passato, non piú la variabile!

    Dovrai utilizzare

    G->numerototalepagine

    Dovresti rivedere le basi del linguaggio...
Devi accedere o registrarti per scrivere nel forum
7 risposte