[C] pasar un entero a char*

Iniciado por KandiZickZad, 2 Mayo 2011, 04:14 AM

0 Miembros y 1 Visitante están viendo este tema.

KandiZickZad

Buenas, espero que me puedan ayudar.
Mi duda es muy basica, pero como no tengo mucha experiencia pues no logro resolverla.

Estoy haciendo un juego en C con gtk+, y necesito que el valor (tipo int) de un spin button se vea en un label que esta a la par y que cambie cada vez que se escoge un nuevo valor para el spin button.

El problema que tengo es que ocupo de alguna manera de tomar el valor int y pasarlo a char *

hice este codigo, pero me da error por usar tan directamente el sprintf


char * intAChar (char * str, int num)
{
return sprinf(str,"%d",num);
}


intento llamar ese codigo de esta manera


int spinValorInt;
spinValorInt = gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinTamano));
labelTamano = gtk_label_new(intAChar("",spinValorInt));


Espero que alguien me pueda ayudar, gracias!




d(n n)b

leogtz

#1
Es sprintf, no sprinf, por eso te da error, sprinf no devuelve un char*, devuelve un int.

Lo que podrías hacer es esto:

#include <stdio.h>
#include <stdlib.h>

unsigned int digitos(signed int numero)
{
   signed int temporal, digitos = 0;
   while(numero)
   {
       temporal = numero % 10;
       numero /= 10;
       digitos++;
   }
   return digitos;
}

char *intAChar(signed int n)
{
   char *string = malloc(sizeof(char) * digitos(n));
   sprintf(string, "%d", n);
   return string;
}

int main(void)
{
   signed int n = 31416;
   char *string = intAChar(n);
   printf("%s\n", string);

   free(string);

return 0;
}
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com