Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,031

    [C]struct

    Una domanda veloce veloce... la scanf accetta come secondo argomento una variabile di tipo struct? Sembra non funzionare... come arricchisco una variabile di tipo struct qualcosa senza farlo via codice ma attraverso l'input?

    Grazie.

    Ecco un esempio:
    codice:
    struct persona{
       char *Nome;
       char *Cognome;
    }
    
    typedef persona Persona;
    
    int main(){
    
    Persona Io;
    printf("Inserisci il nome: ");
    scanf("%s", &Io.Nome);
    
    return 0;
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    1) Non usare &Io.Nome ma semplicemente Io.Nome perche' questo e' gia' un puntatore

    2) Nella struttura c'e' lo spazio per i puntatori ma non per le stringhe stesse che devono essere allocate con la malloc prima della scanf

  3. #3
    Utente di HTML.it L'avatar di Lak3d
    Registrato dal
    Aug 2006
    Messaggi
    1,031
    Originariamente inviato da oregon
    1) Non usare &Io.Nome ma semplicemente Io.Nome perche' questo e' gia' un puntatore
    Uhm, se non ricordo male da errore ugualmente...

    2) Nella struttura c'e' lo spazio per i puntatori ma non per le stringhe stesse che devono essere allocate con la malloc prima della scanf
    che intendi? Non capisco...
    Cioè, ho capito solamente che nella struttura posso dichiarare un puntatore alla struttura, ma questo come risolverebbe il mio problema?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Lak3d
    Uhm, se non ricordo male da errore ugualmente...
    Con la scanf devi usare Io.Nome perche' e' gia' un puntatore alla stringa.
    Usare un puntatore a questo puntatore e' sbagliato.

    Se ottieni un errore, non dipende da questo fatto.

    E poi dovresti essere piu' preciso, indicando quale errore ottieni ...

    Originariamente inviato da Lak3d
    che intendi? Non capisco...
    Saprai che lo spazio di una stringa deve essere allocato prima di usarne il puntatore ...
    Ma tu non lo fai ...

    Prima della scanf e' necessario qualcosa del genere

    Io.Nome = (char *)malloc(100);

    Tra l'altro (ma sara' una dimenticanza) manca il ; alla fine della dichiarazione della struct.

    Originariamente inviato da Lak3d
    Cioè, ho capito solamente che nella struttura posso dichiarare un puntatore alla struttura, ma questo come risolverebbe il mio problema?
    Chi ha mai parlato di puntatore alla struttura da dichiarare nella struttura? Che stai dicendo?

  5. #5
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Oppure puoi modificare la struct con un numero di caratteri predefinito
    [code]
    struct persona{
    char Nome[15];
    char Cognome[15];
    };
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.