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.