usar leer imprimir funciones como caracteres cadenas cadena arreglo c input char

leer - imprimir caracteres en c



error de entrada de caracteres en mi programa C? (2)

Al usar scanf() , dejará un carácter /n en el búfer de entrada. El próximo scanf() mantendrá esta nueva línea y la almacenará. Necesita agregar un espacio a scanf() :

scanf(" %c", &op); /* to skip any number of white space characters */

O consuma el personaje en su lugar con getchar() . La función getchar() devuelve int y EOF en caso de error. Se puede usar de esta forma:

int op = getchar()

Que almacena el personaje encontrado en op . También podría simplemente agregar getchar() después de sus llamadas scanf() , que consumirán el carácter sobrante /n .

Nota: es una buena práctica verificar el resultado de scanf() . Deberías escribir en su lugar:

if (scanf(" %c", &op) != 1) { /* oops, non character found. Handle error */

Soy nuevo en la programación de C, hice un programa de calculadora simple en C.
El programa se ejecuta pero no funciona, funciona hasta que se ingresa el valor para b luego de que cuando llega la entrada de caracteres no solicita la entrada. No sé por qué sucede esto, pero ¿hay alguna solución?

aquí está mi código:

#include <stdio.h> int main() { float a,b; char op; printf("enter a: "); scanf("%f",&a); printf("enter b: "); scanf("%f",&b); printf("enter operation: "); scanf("%c",&op); switch(op) { case ''+'': printf("/n%.2f %c %.2f = %.2f",a,op,b,a+b); break; case ''-'': printf("/n%.2f %c %.2f = %.2f",a,op,b,a-b); break; case ''*'': printf("/n%.2f %c %.2f = %.2f",a,op,b,a*b); break; case ''/'': printf("/n%.2f %c %.2f = %.2f",a,op,b,a/b); break; default: printf("invallid input!!"); } return 0; }

El programa parece ser absolutamente correcto, pero aún hay algo que me falta. Las respuestas son apreciadas.


Simplemente coloque un espacio antes de especificar el formato de caracteres de la función scanf() función enter y su programa funcionará correctamente:

scanf( " %c" , &op );