Si simplemente desea leer un solo carácter de stdin, entonces getchar()
es la opción adecuada. Si tiene requisitos más complicados, entonces getchar()
no será suficiente.
getc()
le permite leer de una corriente diferente (por ejemplo, uno abierto con fopen()
);
scanf()
le permite leer más de un solo carácter a la vez.
El error más común cuando se utiliza getchar()
es tratar de utilizar una variable char
para almacenar el resultado. Debe utilizar una variable int
, ya que el rango de valores getchar()
devuelve un "valor en el rango de unsigned char
, más el valor negativo único EOF
". Una variable char
no tiene suficiente rango para esto, lo que puede significar que puede confundir una devolución de caracteres completamente válida con EOF
. Lo mismo se aplica al getc()
.
Gracias por la respuesta. En scanf si solo doy% c, entonces debería poder leer solo un caracter ¿verdad? – Jay
Sí, pero es excesivo para ese propósito. – caf
Seriamente excesivo. En muchas plataformas, getchar() es una macro que devuelve rápidamente un carácter (con una secuencia amortiguada), o usa fread() para obtener un carácter. Con scanf(), hay mucho trabajo innecesario. – tomlogic