SoloCodigo

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
  1.  
  2. char cadena[] = "-t12345";
  3.  
  4. int longitudN = strlen( cadena ) - 2;
  5.  
  6.  
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.

  Gracias por vuestras respuestas.