|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
|
C char e stringhe
Codice:
typedef struct{ char tipo; int ora[2];/*hh:mm*/ int data[3];/*gg/mm/aaaa*/ }id;{ id a; dov'è l'errore se: printf("inserisci tipo\n"); scanf("%c", &a.tipo); in esecuzione mi salta proprio la scanf... ![]()
__________________
il cucchiaio non esiste...MondoIT: recensioni, appunti di vita da nerd, virtualizzazione e altre diavolerie informatiche Linux User 414915 linux counter Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
|
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Jan 2006
Città: Lassù
Messaggi: 2842
|
Quote:
![]()
__________________
Fa' che non turbi l'anima tua il triste spettacolo dell'ingiustizia umana; anch' essa, nell'economia divina, ha il suo valore. È sopra di essa che vedrai sorgere immancabilmente la giustizia di Dio. HO CONCLUSO EGREGIAMENTE TRATTATIVE CON OLTRE 90 UTENTI! ATTENZIONE: consiglio di evitare assolutamente trattative con l'utente Herant |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
|
..forse avrò sbagliato altro...
__________________
il cucchiaio non esiste...MondoIT: recensioni, appunti di vita da nerd, virtualizzazione e altre diavolerie informatiche Linux User 414915 linux counter Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
prova a fare fflush(stdin) prima della scanf in modo da svuotare il buffer della tastiera
__________________
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
|
più in generale il problema è che devo scrivere(e poi leggere)su un file .dat un char...se implemento il tutto con una stringa di due caratteri tutto ok ma se provo a "risparmiare" un pò nulla di fatto!
altra domanda... dopo aver fatto la scanf("%s",a.tipo) nel caso della stringa di due caratteri come faccio la strcmp per verificare ad esempio, se quel carattere == a 't' ?? strcmp(a.tipo,'T') oppure strcmp(a.tipo,"T\0") o cos'altro???
__________________
il cucchiaio non esiste...MondoIT: recensioni, appunti di vita da nerd, virtualizzazione e altre diavolerie informatiche Linux User 414915 linux counter Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
per i char basta un semplice uguaglianza:
Codice:
variabile == 't'
__________________
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
usa i singoli char, le stringhe vogliono i terminatori, è questo il tuo problema!
__________________
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
|
è vero che le stringhe vogliono i terminatori...ma la scanf il terminatore lo aggiunge da sola!
__________________
il cucchiaio non esiste...MondoIT: recensioni, appunti di vita da nerd, virtualizzazione e altre diavolerie informatiche Linux User 414915 linux counter Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
se ha a disposizione 1 solo byte nn può metterlo.
il terminatore occupa anche lui il suo byte come ogni altro char
__________________
|
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
scusa, avevo ancora in mente il tuo problema originario.
per il confornto fai Codice:
string[0]=='t'
__________________
|
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
|
credo anch'io che dovrebbe andare...ma non và! in ogni caso credo che la soluzione migliore è il char...riguardo ancora casomai ho sbagliato altro
__________________
il cucchiaio non esiste...MondoIT: recensioni, appunti di vita da nerd, virtualizzazione e altre diavolerie informatiche Linux User 414915 linux counter Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
|
Codice:
a.tipo=getchar(); scanf("%c", &a.tipo); ![]()
__________________
il cucchiaio non esiste...MondoIT: recensioni, appunti di vita da nerd, virtualizzazione e altre diavolerie informatiche Linux User 414915 linux counter Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
|
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
il problema sembra essere quello del buffer non vuoto:
prova fflush(stdin)
__________________
|
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
|
...non sei il solo ad avermi consigliato la fflush...mò la provo!
__________________
il cucchiaio non esiste...MondoIT: recensioni, appunti di vita da nerd, virtualizzazione e altre diavolerie informatiche Linux User 414915 linux counter Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
|
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Feb 2004
Città: BhO
Messaggi: 3701
|
...funziona!...
![]()
__________________
il cucchiaio non esiste...MondoIT: recensioni, appunti di vita da nerd, virtualizzazione e altre diavolerie informatiche Linux User 414915 linux counter Ho concluso con yorick, gor, djgusmy85, sulphur, Rospaccio, Leland Gaunt, paciuli
|
![]() |
![]() |
![]() |
#17 | |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
Quote:
![]() il problema è dato dal fatto che spesso la scanf lascia nel buffer alcuni caratteri come l'invio e poi la chiamata successiva interpreta i char residui come la stringa effettivamente immessa. con fflush si forza lo svuotamento e si può operare con un buffer pulito
__________________
|
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:07.