Cita de: cesariox23 en 29 Diciembre 2014, 03:06 AMEl día de hoy empecé a codificar un programa que me permitiría obtener los componentes RGB de una cadena hexadecimal de color, si yo ingresara 6c6c6c me devolvería (108, 108, 108)Si es para practicar, parte de tu proceso de aprendizaje del lenguaje C no hay problema. Pero hay que indicar que dicha operación se puede realizar de forma mas corta mediante scanf, mas o menos así:
Código (c) [Seleccionar]
unsigned r;
unsigned g;
unsigned b;
while (scanf("%2x%2x%2x", &r, &g, &b) == 3)
printf("%x\n%x\n%x\n\n", r, g, b);
En la llamada a scanf el especificador "%2x" indica que se consumirá un máximo de dos caracteres validos para la conversión (dígitos en base 16) y el valor de retorno se verifica para asegurarnos de que se leyeron los tres números correctamente.
----
Cita de: crack81 en 29 Diciembre 2014, 21:18 PMpara corregir el error duplica la funcion scanf("%c", &respuesta);En este caso en particular (carácter '\n' de la linea anterior en el bufer de la entrada estándar) no es necesario duplicar la llamada a función, en su lugar basta con utilizar la cadena de formato " %c" donde el espacio al inicio de ella le indica a scanf que primero descarte todos los caracteres de espacio blanco (espacio, avance de linea, etc.) que encuentre, solo entonces se leerá el carácter y almacenara en la dirección indicada.
Un saludo