Zampero
23-08-2008, 11:41
Riscrivo questo post perchè quello precedente, per una mia disattenzione era stato chiuso, ma soprattutto per ringraziare "ZioSilvio" per l' aiuto che mi ha dato, nonchè per postare la soluzione che potrebbe servire a qualcuno.
Questo era 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.
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.
Questo è quello che sono riuscito a fare:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *Temp;
char h[2];
long tmp[15];
int i;
int main()
{
Temp = "000102030405060708090A0B0C0D0E0F";
for (i=0; i<=15; i++)
{
h[2] = '\0';
strncpy(h, Temp+(i*2),2);
tmp[i] = strtol(h,(char**)NULL,16);
printf("%s\n", h);
}
printf("\n");
for (i=0; i<=15; i++)
{
printf("%d\n", tmp[i]);
}
return 0 ;
}
Byte della Stringa Temp:
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
Valori contenuti nell' array tmp[0] a tmp[15] di tipo long;
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
@ZioSilvio
Ho dovuto fare una modifica in questa stringa:
strncpy(h,Tmp+2*i,2);
con
strncpy(h, Temp+(i*2),2);
Grazie per l' aiuto. ;)
Questo era 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.
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.
Questo è quello che sono riuscito a fare:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *Temp;
char h[2];
long tmp[15];
int i;
int main()
{
Temp = "000102030405060708090A0B0C0D0E0F";
for (i=0; i<=15; i++)
{
h[2] = '\0';
strncpy(h, Temp+(i*2),2);
tmp[i] = strtol(h,(char**)NULL,16);
printf("%s\n", h);
}
printf("\n");
for (i=0; i<=15; i++)
{
printf("%d\n", tmp[i]);
}
return 0 ;
}
Byte della Stringa Temp:
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
Valori contenuti nell' array tmp[0] a tmp[15] di tipo long;
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
@ZioSilvio
Ho dovuto fare una modifica in questa stringa:
strncpy(h,Tmp+2*i,2);
con
strncpy(h, Temp+(i*2),2);
Grazie per l' aiuto. ;)