ciao a tutti
ho un problema: devo convertire un carattare esadecimale in un char *.
Qualcuno di voi ha idea di come fare? In windows ci sono riuscito correttamente. in linux ho qualche problema.
ovviamente in c.
CHi mi sa aiutare?
grazie
yuyu
ciao a tutti
ho un problema: devo convertire un carattare esadecimale in un char *.
Qualcuno di voi ha idea di come fare? In windows ci sono riuscito correttamente. in linux ho qualche problema.
ovviamente in c.
CHi mi sa aiutare?
grazie
yuyu
Chiarisci un po' meglio il problema ...
E quali sono le differenze tra Linux e Windows che ti creano dubbi ...
in pratica ho un carattere esadecimale contenuto in una variabile char. devo metterlo un un char *.
sono un pirla. ho risolto così
char *buffer = new char[2];
int x=(int)car;
itoa((int)car, buffer, 16);
dove car è un carattare.
In windows non avevo fatto il new char[2]; però andava lo stesso. portato su linux invece dava sempre errore. l'ho messo e funziona. non capisco il perchè. qualcuno me lo sa spiegare? :master:
Anche in Windows lo spazio deve essere allocato.
Non hai avuto problemi perche', per caso, lo spazio utilizzato dalla itoa era allocato al processo. Ma avresti comunque "sporcato" tale spazio con risultati non facilmente predicibili.
Inoltre ti consiglio di
1) allocare 3 caratteri perche' una stringa termina con lo zero binario che fa parte della stringa stessa;
2) elimina la seconda linea (dato che non usi x)
3) non usare la itoa perche' e' "insicura" ... usa la versione _itoa_s o la sprintf_s
uhm. interessante quello che dici. io programmo da pochissimo in c/c++ e non ho mai usato una new, se non per istanziare una classe. :master: . devo leggermi bene qualche manualone
terrò a mente il tuo consiglio.