PDA

Visualizza la versione completa : [C] Struct e riempimento di vettori


j_ax31
20-12-2010, 17:21
salve a tutti ho un dubbio sull uso delle stringhe nelle struct,il problema che se io creo una struct del genere



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



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



struct card{
char *seme;
char *carta;}mazzo[40];


anzich



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


???

grazie anticipatamente =)

alka
20-12-2010, 17:44
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 (http://forum.html.it/forum/showthread.php?s=&threadid=973887), altrimenti incomprensibile da leggere.

LeleFT
20-12-2010, 17:44
arrivato appena appena dopo...

ramy89
20-12-2010, 17:46
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 (http://www.cplusplus.com/reference/clibrary/cstdio/fgets/).
Ma non ho capito bene qual' la domanda.
Comunque ti ricordo di racchiudere il codice postato nei tag code.

j_ax31
20-12-2010, 19:25
si scusate la prima volta che scrivo in questo forum non sapevo...
il problema che se io utilizzo la struct in questo modo


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

non appena vado nel main a cercare di riempire il vettore cos:

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...


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");

Loading