elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Pasar de const char* a int
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pasar de const char* a int  (Leído 5,360 veces)
eleon

Desconectado Desconectado

Mensajes: 99


Ver Perfil
Pasar de const char* a int
« 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. ...


En línea

vikour92

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Pasar de const char* a int
« Respuesta #1 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/ )


En línea

vikour92

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Pasar de const char* a int
« Respuesta #2 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/ )

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.
En línea

eleon

Desconectado Desconectado

Mensajes: 99


Ver Perfil
Re: Pasar de const char* a int
« Respuesta #3 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?.
En línea

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: Pasar de const char* a int
« Respuesta #4 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
En línea

Ahorrate una pregunta, lee el man
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines