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

    [C] vettori e struttura

    questo codice mi da errore nella riga di assegnamento del vettore

    #include <stdio.h>

    int main(){
    struct persona {
    char nome[20];
    };
    struct persona giovanni;

    giovanni.nome[20]= "marco";

    printf ("nome %s", giovanni.nome[20]);
    }

    ecco cosa mi dice il debugger:

    warning C4047: '=' : 'char ' differs in levels of indirection from 'char [6]'

    provavettori.obj - 0 error(s), 1 warning(s)

    non riesco a capire, con un vettore non in una sturttura posso fare semplicemente:

    char vettore[20]= "marco";

    perchè qui non funziona?

    Grazie

  2. #2
    codice:
    strcpy(giovanni.nome, "marco");
    non riesco a capire, con un vettore non in una sturttura posso fare semplicemente:

    char vettore[20]= "marco";
    perchè qui non funziona?
    Perché qui non è l'inizializzazione di un array.
    Qualunque assegnamento di questo genere non è consentito all'esterno di un'inizializzazione: questo codice, ad esempio
    codice:
    char vettore[29];
    vettore="marco";
    non verrà compilato. D'altro canto avviene così per tutti i tipi di array (non dimenticare che le stringhe C sono array): questo viene compilato
    codice:
    int vettore[5]={1, 2, 3, 4, 5};
    ma questo no.
    codice:
    int vettore[5];
    vettore={1, 2, 3, 4, 5};
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    daccordo allora come devo fare in questo caso?

    #include <stdio.h>

    int main(){
    struct persona {
    char nome[20];
    };
    struct persona giovanni;

    giovanni.nome[20]= "marco";

    printf ("nome %s", giovanni.nome[20]);
    }

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    codice:
    int main()
    {
      struct persona giovanni;
    
      strcpy(giovanni.nome, "marco");
    
      printf ("nome %s", giovanni.nome);
    
      return 0;
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    ok , quindi l'errore era l'assegnamento dopo l'inizializzazione

    ma questo non vale con gli int vero?

    del tipo posso fare
    codice:
    int a;
    a=5;
    L'ho corretto così il docide alla fine:
    codice:
    #include <stdio.h>
    #include <string.h>
    
    int main(){
    struct persona {
    char nome[20];
    int anni;
    };
     struct persona giovanni;
     strcpy (giovanni.nome, "marco");
     
    printf ("nome %s", giovanni.nome);
    }
    ma perchè invece questo non funziona?
    codice:
    #include <stdio.h>
    #include <string.h>
    
    int main(){
    struct persona {
    char nome[20]= "marco";
    int anni;
    };
     struct persona giovanni;
    
     
    printf ("nome %s", giovanni.nome);
    }

  6. #6
    Non puoi inizializzare un campo all'interno della dichiarazione della struttura: quando dichiari una struttura stai solo dicendo al compilatore che quella struttura è fatta in quella maniera, non stai creando una variabile, per cui non puoi inizializzare niente.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    ok perfetto tutto chiaro

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 © 2024 vBulletin Solutions, Inc. All rights reserved.