Miércoles 6 de Noviembre de 2024, 04:19
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Duda Con Atoi
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Duda Con Atoi (Leído 1558 veces)
mistermeyo
Nuevo Miembro
Mensajes: 3
Duda Con Atoi
«
en:
Lunes 3 de Octubre de 2005, 12:59 »
0
Hola a todos, lo que quiero hacer es lo siguiente:
Necesito ingresar por teclado 10 numeros (cadena) y los quiero convertir a enteros, para eso si no me equivoco uso atoi.
La idea es esta ingreso= 1243567852 y que me devuelva enteros= 1243567852
el problema es me devuelve 22252, pero por ejemplo si ingreso 4 numeros si me los devuelve como quiero, (cadena=1234 ==> enteros=1234) ¿como lo puedo solucionar, que esta mal?
Código: Text
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
int main(int argc, char* argv[])
{
char str1[10];
int n;
printf("Introduce cadena de caracteres: ");
gets(str1);
n=atoi(str1);
printf("cadena = %s entero= %d\n", str1, n);
getch();
return 0;
}
Saludos y gracias!!
Tweet
rir3760
Miembro activo
Mensajes: 37
Re: Duda Con Atoi
«
Respuesta #1 en:
Lunes 3 de Octubre de 2005, 14:18 »
0
Eso se debe a que el valor que se introduce sobrepasa la capacidad del tipo
int
, una posible solucion seria que utilizaras la funcion atol (array to long).
Los valores maximos permitidos para los diferentes tipos enteros estan definidos en el archivo limits.h.
En todo caso es mejor utilizar la funcion strtol (stdlib.h) ya que esta te permite realizar una validacion mas estricta como verificar si el valor esta en el rango valido para el tipo long, si todos los caracteres de la cadena se convirtieron con exito, etc.
Y tambien te recomendaria que eliminaras la llamada a la funcion gets y la sustituyas con fgets + strchr.
Un saludo
The capacity to learn is a gift; The ability to learn is a skill; The willingness to learn is a choice.
-- Rebec of Ginaz
mistermeyo
Nuevo Miembro
Mensajes: 3
Re: Duda Con Atoi
«
Respuesta #2 en:
Martes 4 de Octubre de 2005, 12:12 »
0
nup.... al pobrar con atol, sucede lo mismo, revise el archivo limits.h que tu me dices y la verdad es que no entendi mucho como aplicarlo... recuerda que soy muy nuevo en esto, me podrias explicar mas detenidamente o con algun ejemplo si no es mucho pedir... gracias
rir3760
Miembro activo
Mensajes: 37
Re: Duda Con Atoi
«
Respuesta #3 en:
Martes 4 de Octubre de 2005, 17:06 »
0
El archivo limits.h define los valores maximos y minimos que se pueden almacenar en los tipos enteros como int, long, etc.
Por ejemplo, para conocer los limites de los tipos int y long podemos utilizar:
Código: Text
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int main(void)
{
printf("int - valor maximo = % d\n", INT_MAX);
printf("int - valor minimo = % d\n", INT_MIN);
printf("long - valor maximo = % ld\n", LONG_MAX);
printf("long - valor minimo = % ld\n", LONG_MIN);
return EXIT_SUCCESS;
}
Si queremos verificar que estos limites no se sobrepasen no nos sirven las funciones atoi y atol. En su lugar tenemos que utilizar la funcion strtol, un ejemplo sobre como utilizar esta funcion se encuentra en este tema:
Leer Solo Números O Solo Letras
Un saludo
The capacity to learn is a gift; The ability to learn is a skill; The willingness to learn is a choice.
-- Rebec of Ginaz
mistermeyo
Nuevo Miembro
Mensajes: 3
Re: Duda Con Atoi
«
Respuesta #4 en:
Miércoles 5 de Octubre de 2005, 05:09 »
0
Gracias maestro por la ayuda, al ver el ejemplo del enlace, me da una idea de como puedo hacerlo,... gracias por tu tiempo! cya!
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Duda Con Atoi