PDA

View Full Version : [C] leggere cifre di intero come char


Freaxxx
14-09-2011, 21:42
ho un problema, dovrei leggere da un file dei dati interi che non so a priori quante cifre abbiano e lo devo fare con l'operatore di conversione %c, ad esempio 156 viene letto come 1, 5 e 6, cosa posso fare per ovviare a ciō?

Infrid
14-09-2011, 21:51
una volta caricato il numero su un vettore di caratteri puoi usare la funzione atoi
http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/

Freaxxx
14-09-2011, 22:04
una volta caricato il numero su un vettore di caratteri puoi usare la funzione atoi
http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/

non posso usare tale funzione, sono limitato alle solite basiche senza neanche la possibilitā di usare il casting esplicito.

AngeL)
15-09-2011, 02:51
non posso usare tale funzione, sono limitato alle solite basiche senza neanche la possibilitā di usare il casting esplicito.

in ordine decrescente di "eleganza", farei:

1) atoi, liscio come l'olio
2) ch - '0', brutto a leggersi ma fa il suo sporco lavoro

esempio:int main() {
char *str = "3019293";
while(*str >= '0' && *str <= '9') {
printf("char: '%c', corresponding integer value: %d, to integer:%d\n", *str, *str, *str-'0');
str++;
}
return 0;
}

3) uno switch. Orribile, ma se non puoi usare nč atoi() nč il cast (che nell'esempio 2 č implicito), č l'unica alternativa.

Freaxxx
15-09-2011, 18:02
in ordine decrescente di "eleganza", farei:

1) atoi, liscio come l'olio
2) ch - '0', brutto a leggersi ma fa il suo sporco lavoro

esempio:int main() {
char *str = "3019293";
while(*str >= '0' && *str <= '9') {
printf("char: '%c', corresponding integer value: %d, to integer:%d\n", *str, *str, *str-'0');
str++;
}
return 0;
}

3) uno switch. Orribile, ma se non puoi usare nč atoi() nč il cast (che nell'esempio 2 č implicito), č l'unica alternativa.

il problema č che mi devo attenere al "non uso" di altre funzioni, il 2° punto fa per me, grazie :)