Obtener un int * de un char *

fara3
20 de Abril del 2006
Buenas tengo un char * en el que tengo cuatro parametros separados por ": " .La cuestión es que los tres primeros son tres char que los saco sin problema con la función STRTOK(....), pero el último campo es un array de int.
Pero no se como cojer ese campo como array de int. He probado a hacer un casting, una vez hecho el STRTOK pero nada de nada.

Agradecería cualquier tipo de ayuda.

hiei
20 de Abril del 2006
Bueno... el casting es pedirle demaciado al compilador de C (es demaciada inteligencia para algo que no fue pensado asi...)
Lo que debes hacer es cojer los char* individuales que continen los numeros y hacer una convercion de char* a int con una funcion como atoi( char * ) que debuelve un int... Pero se no entendi mal tu tienes algo asi:
"campo1:campo2:campo3:123456789"
Y el array de ints deberia quedar asi:
[ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
Asi que lo que tienes que hacer es escanear el arreglo de chars que te quedo despues de strtok (supon que lo tienes apuntado por una variable llamada tok tipo char*) y transformar el valor ascii de cada digito en su correspondiente valor decimal restandole un caracter '0' (ojo, no el NUMERO 0, sino el ascii '0' -ascii cero-)
Algo como esto:
int i=0;
int a[20] // o algun valor que sepas sera el max.
tok = strtok( ":", ... ); // Bueno, no me acuerdo como era pero aqui sacas el campo que te interesa.
for (i=0; tok[i]!=0; i++ ) { // Hasta que no se termine el string.
a[i] = tok[i]-'0';
// Tambien podrias verificar con isdigit(tok[i]) que es un numero... sino los otros caracteres resultaran valores extraños
}

Saludos.

fara3
20 de Abril del 2006
Antes de nada muchas gracias, por el tiempo dedicado pero no me ha salido del todo, ya que esta solución solo sirve si los numeros que hay en el array son de un dígito. (O eso creo yo)

//El array tiene valores entre 0 y 99. he pensado pasar un caracter separador entre cada elemento, y despues meter los elementos en el array separandolo por dicho caracter. Pero no he sido capaz. ya que debería llamar a strtok tantas veces como me hiciera falta en el bucle, o algo asi.
Tampoco tengo muy claro como añadir al nombre de una variable
Por ejemplo: cadena + la variable i(Vueltas del bucle, para crear las 100 variables a las que les podría asignar la función Strtok.

//Y todo esto no es más que una pequeña parte de todo el follón. Gracias de todas maneras hiei