Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    9

    [C++]problema stampa array di struct

    codice:
    #include <stdio.h> 
    #include <stdlib.h> 
    #include <time.h> 
    #include <string.h> 
    typedef struct{ char nome[]; 
    char cognome[]; }Giocatore; 
    void caricagiocatori(Giocatore * giocatori,int dim);
    void stampagiocatori(Giocatore giocatori[],int dim); 
    
    int main(){ 
    int dim; 
    printf("inserisci numero giocatori\n"); 
    scanf("%d", &dim); 
    Giocatore giocatori[dim]; 
    caricagiocatori(giocatori,dim); 
    stampagiocatori(giocatori,dim); 
    system("PAUSE"); 
    return 0; } 
    
    
    void caricagiocatori( Giocatore * giocatori,int dim){ 
    int i; 
    
    /*char nom[13];     qui avevo provato con la funzione strncpy con scarsi risultati
    char cogn[14]; */
    
    
    for (i=0;i<dim;i++){ 
    printf("inserisci nome giocatore\n"); 
    scanf("%s",giocatori[i].nome); 
    printf("inserisci cognome giocatore\n"); 
    scanf("%s",giocatori[i].cognome); 
    } 
    
    }
    
     
    void stampagiocatori(Giocatore giocatori[],int dim){ 
    int i; 
    for (i=0;i<dim;i++){ 
    printf("%s %s\n", giocatori[i].nome, giocatori[i].cognome); } 
    }
    sto cercando di creare una funzione per caricare un array di struct di tipo giocatore, ma inseriti i nomi e i cognomi la funzione mi prende come valido solo l'ultimo inserimento, cioè se ad esempio inserisco aa bb cc dd mi stampa 4 volte dd, non capisco dove sbaglio.

  2. #2
    Utente di HTML.it L'avatar di linoma
    Registrato dal
    Mar 2010
    Messaggi
    1,346
    Non puoi usare Giocatore giocatori[dim]; ma
    codice:
    Giocatore *giocatori;
    
    giocatori = malloc(sizeof(Giocatore) * dim);
    o meglio

    codice:
    Giocatore *giocatori;
    
    giocatori = calloc(dim,sizeof(Giocatore));
    Per gli Spartani e Sparta usa spartan Il mio github

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    9
    innanzitutto grazie per a risposta ma non credo la malloc risolva il mio problema, cioè ho provato anche a dare un numero fisso all'array la stampa è sempre sbagliata.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Oltre a confermarti il fatto che devi usare l'allocazione dinamica come ti hanno indicato, come mai nella struttura

    typedef struct{ char nome[];
    char cognome[]; }Giocatore;

    non esiste alcuna dimensione per la stringa nome e per cognome?

    Correggi e mostra il codice nuovo che hai modificato soprattutto se non funziona ancora.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    9
    non sapevo bisognasse dichiarare la dimensione delle stringhe nella struct o meglio l'esempio che riporta il mio manuale non lo fa(sarà un errore di battitura boh)....
    comunque ora il codice funziona!

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da ksts
    non sapevo bisognasse dichiarare la dimensione delle stringhe nella struct o meglio l'esempio che riporta il mio manuale non lo fa(sarà un errore di battitura boh)....
    Mi sembra molto strano ... forse nell'esempio ci sono dei puntatori o altro che non noti ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.