Título: [C] Problema al leer un char dentro de un while Publicado por: cesariox23 en 29 Diciembre 2014, 03:06 am Estimados señores: El 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), el programa estaría hecho para realizar varias conversiones consecutivas asi que consideré correcto incorporar un while y preguntar al usuario si quiere continuar luego de cada conversión, el usuario respondería solo con 2 opciones: s ó n, el detalle es que no he conseguido que el programa me reconozca el char ingresado por el usuario, logré arreglarlo momentáneamente para que me reconozca el valor numérico de los caracteres pero eso se aleja de la idea original, no logro encontrar la falla en mi código y en verdad agradecería cualquier ayuda o crítica constructiva que puedan brindarme.
El entorno de programación que estoy utilizando es: Codeblocks 10050 (http://forums.codeblocks.org/index.php/board,20.0.html) MinGW-w64 4.9.2 POSIX - DWARF (http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/) Este es el código que he escrito hasta ahora. Código
Título: Re: [C] Problema al leer un char dentro de un while Publicado por: T. Collins en 29 Diciembre 2014, 04:23 am Mira el punto 1 y 2 de este enlace:
http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html) y esto también: http://foro.elhacker.net/programacion_cc/error_super_basico_en_c_quien_me_ayuda_soy_nuevo-t262118.14.html (http://foro.elhacker.net/programacion_cc/error_super_basico_en_c_quien_me_ayuda_soy_nuevo-t262118.14.html) Título: Re: [C] Problema al leer un char dentro de un while Publicado por: crack81 en 29 Diciembre 2014, 21:18 pm Tu problema es la funcion scanf("%c", &respuesta); en ocasiones no funciona bien, y no absorbe esa pulsación de Intro que ha quedado en el buffer del teclado después de la lectura del caracter.
Ese es el riesgo cuando usas "scanf" para leer caracteres, especialmente si lo mezclas con otras cosas para corregir el error duplica la funcion scanf("%c", &respuesta); y veras que ya funciona o usa arreglo de caracteres y solo coge la primera posicion Título: Re: [C] Problema al leer un char dentro de un while Publicado por: rir3760 en 30 Diciembre 2014, 04:13 am El 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 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. ---- para 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 |