Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: eleon en 15 Junio 2012, 09:24 am



Título: Pasar de const char* a int
Publicado por: eleon en 15 Junio 2012, 09:24 am
Buenas:

Tengo un puntero de tipo "const char*" que apunta a una cadena que lleva un número. Como es un char no puedo realizar operaciones con él, lo que quiero es asignar el número a una variable de tipo entero. Sería algo así:

Código
  1. const char *valor;
  2. int valorint;
  3. ...
  4.  
  5. valorint = valor;
  6.  
  7. ...


Título: Re: Pasar de const char* a int
Publicado por: vikour92 en 15 Junio 2012, 09:35 am
Buenos días eleon,

Para hacer eso tienes que utilizar una función que se llama atoi ( int atoi(const char * ) ). Está en la cabecera estandar stdlib.h.

Para hacer lo que tu quieres hacer, sigo con tu código:

Código:
// La cabecera
#include <stdlib.h>
...
const char * valor;
int valorint;

valorint = atoi(valor);
...

Un saludo (más info sobre esta función http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/ (http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/) )


Título: Re: Pasar de const char* a int
Publicado por: vikour92 en 15 Junio 2012, 09:38 am
Buenos días eleon,

Para hacer eso tienes que utilizar una función que se llama atoi ( int atoi(const char * ) ). Está en la cabecera estandar stdlib.h.

Para hacer lo que tu quieres hacer, sigo con tu código:

Código:
// La cabecera
#include <stdlib.h>
...
const char * valor;
int valorint;

valorint = atoi(valor);
...

Un saludo (más info sobre esta función http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/ (http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/) )

Nota:
Para que atoi funcione la cadena debe empezar con el número ( es decir "123"), si esta no empezara con el número, deberías colocar un puntero hacia el número.

Osea que, en la cadena "Yo tengo 21 años", deberías recorrer la cadena hasta encontrar un dígito ( isdigit() - ctype.h ) y después pasarle a ese puntero la función atoi.


Título: Re: Pasar de const char* a int
Publicado por: eleon en 15 Junio 2012, 09:41 am
Oh, muchas gracias, funciona.

Pero con tu ejemplo me ha surgido un duda: si en esa cadena llego al número con el puntero y le paso la función atol, ¿no me convertiría a entero solo el 2?, ¿o convierte todas las cifras adyacentes para devolver el 21?.


Título: Re: Pasar de const char* a int
Publicado por: durasno en 15 Junio 2012, 16:09 pm
Hola!
Citar
¿no me convertiría a entero solo el 2?
no

Citar
convierte todas las cifras adyacentes para devolver el 21?
si, ya que le estas pasando un puntero a esa posicion. Osea atol recibe esta cadena "21 años"

Ojo: ojo atol y atoi son dos funciones distintas; atol convierte en un long

Saludos