Foro de elhacker.net

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

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

intento llamar ese codigo de esta manera

Código:
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:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. unsigned int digitos(signed int numero)
  5. {
  6.    signed int temporal, digitos = 0;
  7.    while(numero)
  8.    {
  9.        temporal = numero % 10;
  10.        numero /= 10;
  11.        digitos++;
  12.    }
  13.    return digitos;
  14. }
  15.  
  16. char *intAChar(signed int n)
  17. {
  18.    char *string = malloc(sizeof(char) * digitos(n));
  19.    sprintf(string, "%d", n);
  20.    return string;
  21. }
  22.  
  23. int main(void)
  24. {
  25.    signed int n = 31416;
  26.    char *string = intAChar(n);
  27.    printf("%s\n", string);
  28.  
  29.    free(string);
  30.  
  31. return 0;
  32. }
  33.