algo raro con el scanf de C
Publicado por Rafa (14 intervenciones) el 01/12/2002 22:40:24
Hola, estoy haciendo un programilla en C y me he encontrado con una cosa un tanto rara al leer caracter desde teclado mediante la instrucción "scanf". Resulta que escribiendo el siguiente código elemental en C:
#include<stdio.h>
main()
{
char c = '0';
do {
printf(“di algo...”);
scanf(“%c”,&c);
switch(c)
{
case '1': printf(“has metido el uno\n”);
break;
case 'm': printf(“has metido la m\n”);
break;
}
} while (“c != 's');
}
leo un caracter que intruduzco desde el teclado, y a continuación, en vez de pedirme nuevamente que introduzca un nuevo caracter el bucle "pega otra vuelta" leyendo el caracter retorno de carro. Del bucle sé que no es problem ya que he probado sin él y me pasa más de lo mismo. Vamos que lo que sale es lo siguiente:
di algo...1
has metido el uno
di algodi algo
Véis a qué me refiero? el bucle pega otra vuelta y al pasar por la función "scanf" en vez de pedirme que lea un valor se podría decir que pasa de ello y sigue (lógicamente sin ningún valor).
Os agradecería toda ayuda que me podáis ofrecer.
Un saludo y gracias.
#include<stdio.h>
main()
{
char c = '0';
do {
printf(“di algo...”);
scanf(“%c”,&c);
switch(c)
{
case '1': printf(“has metido el uno\n”);
break;
case 'm': printf(“has metido la m\n”);
break;
}
} while (“c != 's');
}
leo un caracter que intruduzco desde el teclado, y a continuación, en vez de pedirme nuevamente que introduzca un nuevo caracter el bucle "pega otra vuelta" leyendo el caracter retorno de carro. Del bucle sé que no es problem ya que he probado sin él y me pasa más de lo mismo. Vamos que lo que sale es lo siguiente:
di algo...1
has metido el uno
di algodi algo
Véis a qué me refiero? el bucle pega otra vuelta y al pasar por la función "scanf" en vez de pedirme que lea un valor se podría decir que pasa de ello y sigue (lógicamente sin ningún valor).
Os agradecería toda ayuda que me podáis ofrecer.
Un saludo y gracias.
Valora esta pregunta


0