Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337

    [C] struct e funzione

    non mi si compila e non sono sicuro dell'inserimento e lettura delle stringhe.
    grazie

    codice:
    #include <stdio.h>
    typedef struct {char nome[30];
                   char cognome[30];
    			   } persona;
    
    persona persone[30];
    
    void stampa_nome();
    void prendi_nome();
    
    
    void main(){
    
    prendi_nome();
    stampa_nome();
    
    }
    
    
    stampa_nome(){
    printf("il nome utende è; persone[1].nome");
    
    prendi_nome(){
    printf("inserisci nome utente");
    scanf ("%s", persone[1].nome);
    }
    
    
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ci sono un bel po' di errori ... il codice dovrebbe essere questo

    codice:
    #include <stdio.h>
    
    typedef struct
    {
      char nome[30];
      char cognome[30];
    } persona;
    
    persona persone[30];
    
    void stampa_nome();
    void prendi_nome();
    
    
    void main()
    {
      prendi_nome();
      stampa_nome();
    }
    
    
    void stampa_nome()
    {
      printf("Il nome utende e' : %s\n", persone[1].nome);
    }
    
    void prendi_nome()
    {
      printf("Inserisci nome utente : ");
      scanf("%s", &persone[1].nome);
    }
    ... vedi tu dove hai sbagliato ...

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    si grazie , l'errore più grave era aver dimenticato void , davanti alle funzioni, per il resto una graffa, una virgole, delle virgolette.

    grazie

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Infatti ... se fai un po' piu' attenzione, eviti questi problemi ...

    E comunque, se leggi bene le descrizioni degli errori del compilatore, trovi subito il rimedio ...

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    li ho letit gli errori, ma quello del void, proprio no nriuscovo a comprnedere cosa mi dicesse il compilatore, la prossima volta lo riconoscerò subito, credo

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Beh ... ripeto se lo leggi bene (sapendo alcune cose) lo comprendi subito ...

    Cosa diceva?

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    c:\documents and settings\admin\desktop\funzioni\copia di struct_funzione2.c(21) : error C2371: 'stampa_nome' : redefinition; different basic types
    c:\documents and settings\admin\desktop\funzioni\copia di struct_funzione2.c(9) : see declaration of 'stampa_nome'
    c:\documents and settings\admin\desktop\funzioni\copia di struct_funzione2.c(25) : error C2371: 'prendi_nome' : redefinition; different basic types
    c:\documents and settings\admin\desktop\funzioni\copia di struct_funzione2.c(10) : see declaration of 'prendi_nome'
    Error executing cl.exe.

    questo senza i due void finali

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ecco ... perche'

    'stampa_nome' : redefinition; different basic types

    ?

    Come ti dicevo, devi sapere che, se non metti il void, il compilatore intende che ci sia un int e quindi si trova definite due funzioni, una tramite il prototipo

    void stampa_nome();

    e un'altra nel corpo del programma, come se fosse

    int stampa_nome()

    e quindi ti chiede come mai hai "ridefinito" la funzione stampa_nome che, a guardare il prototipo, non restituiva nulla, ma che appena e' stata trovata nel sorgente, restituisce un int ...

    E ti consiglia anche

    see declaration of 'stampa_nome'

    !!

    Questo per farti notare che non solo e' importante avere le conoscenze per programmare ma, e' importantissimo (forse piu' importante) avere le conoscenze per effettuare il debugging delle applicazioni ...

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    accidneit, ho capito, io pensavo che non mettere nulla equivalesse a viod, invece equivale a int.

    ora ho capito il perchè.

    grazie

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.