PDA

View Full Version : Aiuto da chr ad int in C


Zampero
21-08-2008, 13:38
Colgo l' occasione per salutare tutto il foro.

Vi presento il mio problema:

Mettiamo il caso che ho una variabile char dal nome Temp:

Temp = "000102030405060708090A0B0C0D0E0F"

Ora avrei bisogno di una funzione che mi converta in array int, in questo modo:

Tmp2[0]= 0
Tmp2[1]= 1
Tmp2[2]= 2
Tmp2[3]= 3
Tmp2[4]= 4
Tmp2[5]= 5
Tmp2[6]= 6
Tmp2[7]= 7
Tmp2[8]= 8
Tmp2[9]= 9
Tmp2[10]= 10
Tmp2[11]= 11
Tmp2[12]= 12
Tmp2[13]= 13
Tmp2[14]= 14
Tmp2[15]= 15

In teoria non riesco a prelevare 2 caratteri per volta della variabile Temp e a convertirli in interi.

Grazie.

Ziosilvio
21-08-2008, 14:08
Mettiamo il caso che ho una variabile char dal nome Temp:

Temp = "000102030405060708090A0B0C0D0E0F"
Allora è una variabile char *, non una variabile char.

Inoltre, se scrivi
s = "stringa";
fai puntare la variabile s a una stringa immutabile.
Potresti voler cambiare delle lettere, nel qual caso devi copiare la stringa a partire da s, dopo aver allocato abbastanza memoria.

avrei bisogno di una funzione che mi converta in array int, in questo modo:

Tmp2[0]= 0
Tmp2[1]= 1
Tmp2[2]= 2
Tmp2[3]= 3
Tmp2[4]= 4
Tmp2[5]= 5
Tmp2[6]= 6
Tmp2[7]= 7
Tmp2[8]= 8
Tmp2[9]= 9
Tmp2[10]= 10
Tmp2[11]= 11
Tmp2[12]= 12
Tmp2[13]= 13
Tmp2[14]= 14
Tmp2[15]= 15

In teoria non riesco a prelevare 2 caratteri per volta della variabile Temp e a convertirli in interi.
Crea una variabile char * aggiuntiva h.
Alloca memoria per due caratteri più uno (il carattere nullo di fine stringa) a partire da h, e poni h[2] uguale a '\0'.
Per i da 0 a 15, copia in h i caratteri 2i e 2i+1 di Tmp con strncpy(h,Tmp+2*i,2), e scrivi in Tmp2[i] il valore strtol(h,(char**)NULL,16).

Devi porre tu h[2] uguale a '\0', perché strncpy non lo fa se non lo legge.
strtol è definita in stdlib.h, strncpy in string.h.

cionci
21-08-2008, 16:53
http://www.hwupgrade.it/forum/showthread.php?t=1649196