Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    88

    [C] Struct

    salve a tutti ho un dubbio sull uso delle stringhe nelle struct,il problema è che se io creo una struct del genere

    codice:
    struct studente{
    		     char nome[30];
                           char cognome[30];
                           int eta;
                           int matricola;
                           }v[100];
    con un ciclo for di questo tipo riesco a far riempire il vettore da input

    codice:
     for(i=0;i<n;i++){
          printf("INSERISCI NOME %d° STUDENTE:\n",i+1);
          scanf("%s",v[i].nome);
          printf("INSERISCI COGNOME %d° STUDENTE:\n",i+1);
          scanf("%s",v[i].cognome);
          printf("INSERISCI ETA' %d° STUDENTE:\n",i+1);
          scanf("%d",&v[i].eta);
          printf("INSERISCI MATRICOLA %d° STUDENTE:\n",i+1);
          scanf("%d",&v[i].matricola);
          printf("\n\n");
    ma se io voglio invece riempire il vettore direttamente nel main per quale motivo devo creare la struct in questo modo

    codice:
    struct card{
                 char *seme;
                 char *carta;}mazzo[40];
    anzichè

    codice:
    struct card{
                 char seme[20];
                 char carta[20];}mazzo[40];
    ???

    grazie anticipatamente =)

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,282

    Moderazione

    Originariamente inviato da j_ax31
    salve a tutti ho un dubbio sull uso delle stringhe nelle struct
    Usa il tag [CODE] per la formattazione del codice, come indicato nel Regolamento, altrimenti è incomprensibile da leggere.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,301

    Moderazione

    [edited] arrivato appena appena dopo... [/edited]
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Cos'è che non hai capito in particolare?
    Se tu dichiari una struttura avente come elementi dei puntatori a caratteri,un modo per scrivere sulle strutture che hai in memoria è quello di usare i comandi malloc e calloc e poi ricevere i valori delle stringhe da standard input.
    Oppure se hai stringhe di dimensioni predefinite usi fgets.
    Ma non ho capito bene qual' è la domanda.
    Comunque ti ricordo di racchiudere il codice postato nei tag code.

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    88
    si scusate è la prima volta che scrivo in questo forum non sapevo...
    il problema è che se io utilizzo la struct in questo modo
    codice:
    struct card{              
    char seme[20];             
    char carta[20];}
    mazzo[40];
    non appena vado nel main a cercare di riempire il vettore così:
    codice:
    mazzo[0].seme="Spada"; 
               mazzo[0].carta="Asso";
    il compilatore restituisce un errore mentre se utilizzo il puntatore no...cosa che non accade qui quando però faccio la stessa cosa immettendo i valori poi nell output...

    codice:
    struct studente{ 		     
    char nome[30];                        
    char cognome[30];                        
    int eta;                        
    int matricola;                        
    }v[100]; 
    
    
     for(i=0;i<n;i++){
          printf("INSERISCI NOME %d° STUDENTE:\n",i+1);
          scanf("%s",v[i].nome);
          printf("INSERISCI COGNOME %d° STUDENTE:\n",i+1);
          scanf("%s",v[i].cognome);
          printf("INSERISCI ETA' %d° STUDENTE:\n",i+1);
          scanf("%d",&v[i].eta);
          printf("INSERISCI MATRICOLA %d° STUDENTE:\n",i+1);
          scanf("%d",&v[i].matricola);
          printf("\n\n");

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.