Programación General => C/C++ => Mensaje iniciado por: vagazo en Sábado 11 de Agosto de 2007, 16:40
Título: Ayuda Con Algo Facil Que No Soy Capaz De Hacer
Publicado por: vagazo en Sábado 11 de Agosto de 2007, 16:40
Imaginad que en C tenemos una cadena del tipo -LN, donde L es cualquier letra y N es cualquier número de cualquier longitud. Un par de ejemplos serían: -t301 -d20874
¿Cómo conseguiría separar el -L del N de manera que en el primer ejemplo tuviera el -t por un lado y el 301 por otro y en el segundo ejemplo obtuviera dos cadenas que serían -d y 20874?
Aparte del hecho de separlos, está también que no se sabe la longitud del número así que no se puede coger un numero de caracteres fijos a partir de la tercera posición, justo después de la letra, aunque eso es menos problemático.
Muchas gracias.
Título: Re: Ayuda Con Algo Facil Que No Soy Capaz De Hacer
Publicado por: bob esponja en Sábado 11 de Agosto de 2007, 21:00
queres parsear argumentos de la linea de comando? hay librerias para eso
Título: Re: Ayuda Con Algo Facil Que No Soy Capaz De Hacer
Publicado por: Geo en Sábado 11 de Agosto de 2007, 22:02
Teniendo la cadena, con strlen puedes saber la longitud del número restando las dos primeras posiciones.
Código: Text
char cadena[] = "-t12345";
int longitudN = strlen( cadena ) - 2;
Título: Re: Ayuda Con Algo Facil Que No Soy Capaz De Hacer
Publicado por: vagazo en Domingo 12 de Agosto de 2007, 17:50
Ya lo conseguí hacer. Resulta que como las dos primeras posiciones de la cadena son un guión y una letra, sabes que en la tercera comienza el número, asi que si tienes por ejemplo esta cadena:
cadena = "-f789123"
Haciendo esto: atoi (&(cadena[2])) te pilla el 789123 entero y te lo convierte en numero.