pasa de int a string en c

Iniciado por jose_j, 5 Enero 2018, 00:57 AM

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

jose_j

Hola gente aquí de nuevo con otro problemita  :( ,(nuevamente digo que soy nuevo en c ) lo que quería saber es si hay una forma de pasar un numero , o sea un int a un "string" por así decirlo (un arrays de chars) para poder asi mandar por el puerto serie, tengo un micro atmega328p  que hace la conversión AD y quiero ver ese valor en el monitor serie  que trae arduino, lo que se me ocurrió es meter ese valor de la conversión en un array char  mandalo uno por uno, o me pueden sugerir otra forma. Gracias     

MAFUS

Mira si tienes sprintf, que es igual a printf pero en vez de a la salida estándar el resultado va a un buffer tipo char* o lo haces a mano con módulos, divisiones y sumas en un for.

jose_j

Cita de: MAFUS en  5 Enero 2018, 03:48 AM
Mira si tienes sprintf, que es igual a printf pero en vez de a la salida estándar el resultado va a un buffer tipo char* o lo haces a mano con módulos, divisiones y sumas en un for.
gracias por responder, cuando decis "o lo haces a mano" como seria? tendrias una idea mas o menos de como podria  hacerlo?.
saludos!

MAFUS

Una solución rápida sería prepara un array tan largo como el mayor número, en decimal, representable con la palabra de tu uC más 1:
De 8 bits es 4 (255)
De 16 bits es 6 (65535)
Etc.

Si también vas a poder representar números negativos recuerda añadir otro carácter para representar el símbolo -

Índice = 0
Si el número es negativo márcalo con una variable y haces tu número positivo: número = -número
Hasta que el número sea 0:
    Array[índice] = (número % 10) + '0' // para transformar el número en su carácter ASCII
    Número = número / 10
    Índice = índice + 1

Si tu número era negativo (observando lo que dice la variable que has marcado anteriormente) añade el carácter - a tu cadena
En cambio si era positivo resta 1 a índice.

Ahora, aprovechando que índice te marca el final de la cadena, la inviertes. A la resultante le añades el carácter '\0' detrás para cerrarla.

Ya tienes tu número transformado en cadena.