caracteres - Scanf no está escaneando el carácter% c pero omite la declaración, ¿por qué?
scanf char (4)
Cada vez que use scanf con este formato:
scanf("%c",&a);
deja una nueva línea que se consumirá en la próxima iteración. El último programa que usted mencionó tiene solo un "scanf". intenta usar otro scanf. obtendrás el mismo problema
así que para evitar espacios en blanco debes escribir:
scanf(" %c",&opr);
el espacio antes de la cadena de formato le dice a scanf que ignore los espacios en blanco. O es mejor usar
getchar();
Se consumirá toda su nueva línea
Escribí un programa usando la declaración de mayúsculas y minúsculas y pedí una entrada para char pero no pide el carácter en la ventana de la consola, pero se salta completamente
int main()
{
float a, b, ans;
char opr;
printf("/nGIVE THE VALUES OF THE TWO NUMBERS/n");
scanf(" %f %f",&a,&b);
printf("/nGIVE THE REQUIRED OPERATOR/n");
//no display(echo) on the screen
//opr = getch();
//displays on the screen
//opr = getche();
scanf("%c",&opr);
switch(opr)
{
case ''+'' :
ans = a+b;
printf("%f", ans);
break;
case ''-'' :
ans = a-b;
printf("%f", ans);
break;
case ''*'' :
ans = a*b;
printf("%f", ans);
break;
case ''/'' :
ans = a/b;
printf("%f", ans);
break;
case ''%'' :
ans = (int)a % (int)b;
printf("%f", ans);
break;
default :
printf("/nGIVE A VALID OPRATOR/n");
}
system("pause");
return 0;
pero cuando puse un espacio antes de %c
en el segundo scanf
, funciona que alguien estaba diciendo algo acerca de un espacio en blanco que me pareció confuso
Dijo que el segundo scanf
está tomando el valor de /n
como un personaje y si pongo un espacio antes de que %c
en el segundo scanf
no sea ese un personaje y ¿no toma el espacio como el personaje?
Pero en este programa no toma /n
como el personaje
int main()
{
char a;
printf("/ngive a char/n");
scanf("%c",&a);
printf("%c",a);
return 0;
}
Esto es realmente confuso. Puede ayudarme. Quiero aprender qué está mal.
El problema es que está dejando el /n
ingresado después de que los números no fueron consumidos y luego es leído por el segundo scanf()
. Si comprueba el valor en opr
, verá que es ''/ n''.
El segundo programa toma /n
como el personaje.
Tal vez simplemente no ingresó /n
antes de ingresar otros caracteres.
Intente agregar fflush (stdin) antes de escanear.