| Autore |
Discussione  |
|
|
ohtar
Utente medio
 
|
Inserito il - 05/07/2004 : 13:34:27
|
Come faccio ad assegnare ad un campo di tipo char di una struct, la stringa presa in input?
esempio: struct table{ char nominativo[30]; }tabella;
char nome[30]; printf("Inserisci un nome\n"); scanf("s",&nome); tabella.nominativo=nome; printf("Il nome inserito e': %s",tabella.nominativo);
Qualcuno sa dirmi come posso fare e se questo procedimento è sbagliato? Ci sono errori di assegnazione per caso?
Grazie.
|
www.giovinazzo.it , per sapere tutto ciò che accade a Giovinazzo. |
|
|
genius
dott. ing. cav. ...FN
    

Regione: Puglia
Prov.: Bari
Città: Molfetta - Caput Mundi
|
Inserito il - 05/07/2004 : 14:02:16
|
Citazione: Messaggio inserito da ohtar
Come faccio ad assegnare ad un campo di tipo char di una struct, la stringa presa in input?
esempio: struct table{ char nominativo[30]; }tabella;
1. char nome[30]; 2. printf("Inserisci un nome\n"); 3. scanf("s",&nome); 4. tabella.nominativo=nome; 5. printf("Il nome inserito e': %s",tabella.nominativo);
Qualcuno sa dirmi come posso fare e se questo procedimento è sbagliato? Ci sono errori di assegnazione per caso?
Grazie.
i miei ricordi vaghi di c mi dicono ke alla riga 3 va scritto...
"%s" e nn "s"... |
"...e se non hai morale e se non hai passione se nessun dubbio ti assale perché la sola ragione che ti interessa avere è una ragione sociale soprattutto se hai qualche dannata guerra da fare non farla nel mio nome non farla nel mio nome che non hai mai domandato la mia autorizzazione se ti difenderai non farlo nel mio nome che non hai mai domandato la mia opinione..."
Un blog farlocco |
 |
|
|
ohtar
Utente medio
 
|
Inserito il - 05/07/2004 : 14:04:15
|
| no quello è stato un mio errore di scrittura.ma nn è quello il problema purtroppo. |
www.giovinazzo.it , per sapere tutto ciò che accade a Giovinazzo. |
 |
|
|
ohtar
Utente medio
 
|
Inserito il - 05/07/2004 : 14:58:48
|
A me da il seguente errore a questa riga: tabella.nominativo=nome; Errore: incompatible types in assignment Qualcuno sa come posso risolvere questo errore? |
www.giovinazzo.it , per sapere tutto ciò che accade a Giovinazzo. |
 |
|
|
Chilavert
admin
    

Regione: Puglia
Prov.: BA
Città: Bari
|
Inserito il - 05/07/2004 : 15:12:29
|
| anzichè scanf usa gets... |
E' un bene per il Prof. Xxxxxxx che sappia con chi ha a che fare. Pensa a studiare e non agli esempi, o ad altre strade per così dire, che questa volta mi sa che non attacca. [cit.]
Tutti professori dall'esterno, e poi parlano persone che per prendere un voto decente ripetono l'esame 30 volte e poi fanno i sapientoni con chi segue la prima volta vedi chilavert [cit.] |
 |
|
|
ohtar
Utente medio
 
|
Inserito il - 05/07/2004 : 15:43:18
|
| Mi da sempre lo stesso errore anche con gets.Non so come fare. Riesco a visualizzare tutti i campi interi ma non quelli contenenti stringhe. |
www.giovinazzo.it , per sapere tutto ciò che accade a Giovinazzo. |
 |
|
|
Chilavert
admin
    

Regione: Puglia
Prov.: BA
Città: Bari
|
Inserito il - 05/07/2004 : 15:45:22
|
prova printf("Il nome inserito e': %s",&tabella.nominativo);
|
E' un bene per il Prof. Xxxxxxx che sappia con chi ha a che fare. Pensa a studiare e non agli esempi, o ad altre strade per così dire, che questa volta mi sa che non attacca. [cit.]
Tutti professori dall'esterno, e poi parlano persone che per prendere un voto decente ripetono l'esame 30 volte e poi fanno i sapientoni con chi segue la prima volta vedi chilavert [cit.] |
 |
|
|
badpenguin
Nuovo Utente

Regione: Puglia
Prov.: Bari
|
Inserito il - 05/07/2004 : 15:46:52
|
Il problema è dovuto come dice il tuo compilatore, ad un assegnazione errata Nella fattispecie stai cercando di assegnare un indirizzo di memoria e non il valore in se.
Per copiare le stringhe puoi usare le funzioni di librerie standard del C per la gestione delle stringhe, in questo caso la strcpy, o strncpy ritenuta piu sicura.
Dovresti fare qualcosa del genere:
struct table{ char nominativo[30]; }tabella;
char nome[30]; printf("Inserisci un nome\n"); scanf("%s",nome); strcpy(tabella.nominativo,nome); // oppure strncpy(tabella.nominativo,nome,30) printf("Il nome inserito e': %s",tabella.nominativo);
Ricordati di inserire anche #include<string.h> all'inizio del sorgente.
Ciao |
Software is like sex: it's better when it's free. (Linus Torvalds) |
 |
|
|
novantuno
Ero-sannin
  

Regione: Puglia
Prov.: Bari
Città: Modugno
|
Inserito il - 05/07/2004 : 16:10:59
|
Secondo me potresti benissimo fare a meno della stringa nome ed immettere il tutto nel campo nominativo del record !
Tutto il resto scritto da badpenguin è perfetto !
Un ultima cosa : la stringa inserita deve avere lo spazio necessario a contenere anche il carattere di terminazione della stringa '\0' ! |
 |
|
|
ohtar
Utente medio
 
|
Inserito il - 05/07/2004 : 16:18:56
|
| Grazie badpenguin adesso è tutto ok e finalmente la gestione del libretto universitario è conclusa. |
www.giovinazzo.it , per sapere tutto ciò che accade a Giovinazzo. |
 |
|
| |
Discussione  |
|