Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: KandiZickZad en 2 Mayo 2011, 04:14 AM

Título: [C] pasar un entero a char*
Publicado por: KandiZickZad en 2 Mayo 2011, 04:14 AM
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!
Título: Re: [C] pasar un entero a char*
Publicado por: leogtz en 2 Mayo 2011, 08:01 AM
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;
}