View Full Version : C char e stringhe
typedef struct{
char tipo;
int ora[2];/*hh:mm*/
int data[3];/*gg/mm/aaaa*/
}id;{
dopo un
id a;
dov'è l'errore se:
printf("inserisci tipo\n");
scanf("%c", &a.tipo);
in esecuzione mi salta proprio la scanf... :rolleyes:
in esecuzione mi salta proprio la scanf... :rolleyes:
Non è sbagliato ... quindi deve funzionare!
AbuJaffa
13-01-2006, 20:38
typedef struct{
char tipo;
int ora[2];/*hh:mm*/
int data[3];/*gg/mm/aaaa*/
}id;{
dopo un
id a;
dov'è l'errore se:
printf("inserisci tipo\n");
scanf("%c", &a.tipo);
in esecuzione mi salta proprio la scanf... :rolleyes:
Infatti. Il codice è esatto. ;)
..forse avrò sbagliato altro...
prova a fare fflush(stdin) prima della scanf in modo da svuotare il buffer della tastiera
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???
per i char basta un semplice uguaglianza:
variabile == 't'
usa i singoli char, le stringhe vogliono i terminatori, è questo il tuo problema!
è vero che le stringhe vogliono i terminatori...ma la scanf il terminatore lo aggiunge da sola!
se ha a disposizione 1 solo byte nn può metterlo.
il terminatore occupa anche lui il suo byte come ogni altro char
scusa, avevo ancora in mente il tuo problema originario.
per il confornto fai
string[0]=='t'
cmq secondo me anche con i char dovrebbe andare. prova a sostituire la scanf con la getch
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
a.tipo=getchar();
scanf("%c", &a.tipo);
sto impazzendo...solo con una scanf e una getchar di fila non mi salta :doh:
il problema sembra essere quello del buffer non vuoto:
prova fflush(stdin)
...non sei il solo ad avermi consigliato la fflush...mò la provo!
...funziona!... :muro: che peccato però ho consegnato proprio stamattina!!vabbè fa niente...grazie wisher
...funziona!... :muro: che peccato però ho consegnato proprio stamattina!!vabbè fa niente...grazie wisher
io cmq te l'avevo detto già tre giorni fa :sofico:
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
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.