problema en el escaneo de caracteres en C

#include #include void main() { int a,b,c; char ch; printf("Enter value of a and b"); scanf("%d %d",&a,&b); printf("Enter choice of operation"); scanf("%c",&ch);// **Here this statment is not able to receive my input*** switch(ch) { case '+': c=a+b; break; case '-': c=ab; break; default: printf("invalid"); break; } getch(); } 

Error:

scanf("%c",&ch); // Aquí esta statement no puede recibir mi entrada ¿ No se puede escanear la entrada proporcionada por el usuario ??????

Gracias..

A diferencia de la mayoría de las conversiones, %c no omite los espacios en blanco antes de convertir un carácter. Después de que el usuario ingresa los dos números, queda un retorno de carro / nueva línea en el búfer de entrada que espera ser leído, de modo que eso es lo que lee %c .

Está obteniendo el carácter de nueva línea de su entrada de datos anterior. Considere el uso de fgets() y sscanf() lugar de usar scanf() directamente.

Aquí, en esta statement, escriba %s lugar de %c . Seguramente funcionará.

 scanf("%s",&ch); 

Simplemente intente scanf(" %c", &ch); Esto se debe a que su scanf trata el espacio en blanco después del segundo número como el carácter que se insertará en ch.

Para una entrada de un solo carácter, use getchar ().

Si solo estás leyendo en un solo carácter, puedes usar getchar()

  c = getchar(); 

Use getchar() o sscanf() lo que sea más getchar() .

Me gusta

 char ch; ch = getchar(); 

Esto es simple. también si desea usar scanf("%c",&ch); luego, simplemente elimine el \n de su statement printf() anterior.

en este problema puede escribir como este scanf (“% c”, & ch);

un espacio cubrirá su carácter “Ingresar”, luego escanea la entrada que desea … https://ide.geeksforgeeks.org/ANGPHrqeAq