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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [ANSI C] IntToStr - StrToInt
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [ANSI C] IntToStr - StrToInt  (Leído 5,690 veces)
The Swash

Desconectado Desconectado

Mensajes: 194


Programmer


Ver Perfil WWW
[ANSI C] IntToStr - StrToInt
« en: 7 Enero 2011, 22:07 pm »

Código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/* @autor:     The Swash
   @function:  IntToStr - StrToInt
   @language:  ANSI C
*/
   
int StrToInt(char * string);
char * IntToStr(int number);

int main()
{
    printf("char: %s \n",IntToStr(123));
    printf("int: %i",StrToInt("123"));
    return 0;
}



int StrToInt(char * string)
{
    int i, n, temp = 0;
    for (i = 0; i < strlen(string); i++)
    {
        if (  ( (int)string[i]< 48 ) || ( (int)string[i]>57 )  ) // Si el caracter es distinto a un numero
        {
            return -1; //Salimos y retornamos -1
        }
        else
        {
            for (n = 48; n <= 57; n++) // Hacemos un bucle desde el numero 0 al 9 basandonos en su valor ASCII
            {
                if (string[i] == n) // Si el valor ASCII del caracter actual correspondi al valor ASCII de un numero
                {
                    temp += (string[i] - 48); // Obtiene y suma el número actual al buffer
                    temp *= 10; // Aumenta una cifra al resultado
                }
            }
        }
    }
    return temp / 10; // Retorna el buffer, quitandole la última cifra que sobra
}



char * IntToStr(int number)
{
    int num, len = 0, i = 0, altnumber = number;
    char * buffer;
    if (number == 0)
    {
        return "0";
    }
    else
    {
        while (number > 0)
        {
           num = number%10;
           number = number / 10;
           len++;
        }
        buffer = (char *) malloc (len);
        memset(buffer,0,strlen(buffer));
        num = 0;
        i = len -1;
        while (altnumber> 0)
        {
           num = altnumber%10;
           altnumber = altnumber / 10;
           buffer[i] = (num + 48);
           i--;
        }
        return buffer;
    }


}

Bueno chicos, estaba aprendiendo ejecucion de una aplicacion con parametros por consola, y me surgió la necesidad de convertir tipos, me sirvió itoa y atoi pero no son standares, así que decidí hacer mis propias funciones a pura cabeza.
Linkgl dedicado para vos =).
Espero les sea de utilidad.

PD: Gracias osnaraus por explicarme el pequeño detalle

Saludos.


« Última modificación: 7 Enero 2011, 23:55 pm por The Swash » En línea

Oblivi0n


Desconectado Desconectado

Mensajes: 392

Odio las ranas.


Ver Perfil
Re: [ANSI C] IntToStr - StrToInt
« Respuesta #1 en: 7 Enero 2011, 22:16 pm »

atoi si es standart (stdlib.h) y puede suplir a StrToInt(char *string)  :silbar:


En línea

The Swash

Desconectado Desconectado

Mensajes: 194


Programmer


Ver Perfil WWW
Re: [ANSI C] IntToStr - StrToInt
« Respuesta #2 en: 7 Enero 2011, 22:29 pm »

Mmm bueno, creo que me he equivocado entonces, pero igual por lo menos espero que la idea valga!

Saludos y gracias por comentar!
En línea

Oblivi0n


Desconectado Desconectado

Mensajes: 392

Odio las ranas.


Ver Perfil
Re: [ANSI C] IntToStr - StrToInt
« Respuesta #3 en: 7 Enero 2011, 22:37 pm »

Si jaja  esta muy bien, una vez hice algo similar, pero para pasar de entero a char, dividia al numero entre sus digitos, y luego hacia un switch xD, que tiempos aquellos....

Buen code, un saludo!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
AYUDA CON ANSI.SYS
Scripting
janus_gf 0 2,000 Último mensaje 8 Diciembre 2007, 20:48 pm
por janus_gf
[ANSI C]Calculadora.
Programación C/C++
PHAMTOM 4 3,592 Último mensaje 15 Julio 2010, 00:12 am
por .:BlackCoder:.
[ANSI.SYS]Paint « 1 2 »
Scripting
BlacKGilgamesH 11 5,799 Último mensaje 15 Septiembre 2010, 01:27 am
por leogtz
problemas con el strtoint en pascal
Programación General
¡Micronet! 5 5,644 Último mensaje 3 Febrero 2011, 00:16 am
por Khronos14
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines