Cuando escribe una línea de palabras y presiona la tecla Intro, ¿el contenido de esta línea ingresa al búfer del teclado o ya ingresa al búfer del teclado mientras escribe?
Las funciones básicas de getch y getchar son las mismas, la diferencia es que getch obtiene el valor de la clave directamente del teclado sin esperar a que el usuario presione la tecla Intro. Tan pronto como el usuario presiona una tecla, getch regresa inmediatamente. El valor de retorno de getch es el código ASCII ingresado por el usuario y se devuelve -1 cuando ocurre un error. Los caracteres ingresados no aparecerán en la pantalla. La función getch se usa a menudo en la depuración de programas. Durante la depuración, los resultados relevantes se muestran en ubicaciones clave para su visualización y luego la función getch se usa para pausar el programa.
Ejemplo de programa:
# include ltstdio.h gt
int main(void)
{
int c;
/* Tenga en cuenta que getchar tiene un buffer de línea desde stdin y
; esto significa que no regresará hasta que
presione la tecla Intro. */
mientras ((c = getchar())!= '\n ')
printf("c ", c);
Devuelve 0 ;
}
Nota: Puede utilizar la función getchar() para permitir a los programadores presionar el teclado antes de regresar a la interfaz de edición después de la depuración del programa. Uso: La función principal finaliza y devuelve 0;; agregue getchar() delante de ella; simplemente hágalo
Acerca del terminador de archivo EOF
EOF es la abreviatura de fin de archivo. .
En lenguaje C, es una macro definida en la biblioteca estándar.
La gente suele confundir EOF con caracteres leídos de un archivo (recuerde). De hecho, EOF no es un carácter, se define como un número negativo de tipo int (por ejemplo, -1). En realidad, EOF no está en el archivo. EOF no solo se refiere al estado final del archivo (que se puede detectar con feof()), sino que también se refiere a errores de lectura y escritura en operaciones de E/S (generalmente con ferror()) y el estado de error de otras operaciones relacionadas. .
Si se lee el final del archivo, Getchar devuelve EOF.
Los clásicos del maestro hay que leerlos con atención. Solía leer el lenguaje de programación C de K;r (segunda edición)
La entrada/salida de caracteres en la parte 1.5 se confundió con getchar() y EOF. Tal vez sea principalmente porque no sé cómo funciona getchar() y el uso de e of. Por eso creo que es necesario resumirlo; de lo contrario, muchos puntos de conocimiento triviales se olvidarán después de mucho tiempo. La mejor manera es escribirlos.
De hecho, el programa más típico para getchar() tiene sólo unas pocas líneas de código. El entorno que uso es DebianGNU/Linux, y lo mismo se aplica a otros sistemas.
En primer lugar, dos resúmenes de getchar:
1. Se accede a getchar en unidades de fila.
Cuando se utiliza getchar para la entrada, si el primer carácter ingresado es un carácter válido (es decir, se ingresa el terminador de archivo EOF, que es la combinación de teclas Ctrl Z en Windows y la combinación de teclas en Unix/ Linux Ctrl D), solo cuando el último carácter ingresado sea el carácter de nueva línea '\n' (también puede ser el terminador de archivo EOF, que se discutirá más adelante), getchar detendrá la ejecución y todo el programa se detendrá. Por ejemplo, el siguiente segmento de programa:
while((c =getchar())!=EOF){
putchar(c);
}< / p>
Para ejecutar el programa, escriba: abc y luego presione la tecla Enter. Luego, el programa ejecutará puchar(c) y generará abc. No olvides este lugar, la salida del sistema también tiene retorno de carro. Luego puede continuar escribiendo. Cuando se encuentre nuevamente un carácter de nueva línea, el programa generará los caracteres de entrada de esa línea en la terminal.
Para getchar, creo que muchos principiantes preguntarán: ¿getchar no se lee usando caracteres? Por lo tanto, dado que se ingresa el primer carácter A, ¡se debe cumplir el bucle while (c = getchar())! = EOF, entonces se debe ejecutar putchar(c) para generar un carácter A en la terminal. Sí, siempre lo he pensado cuando uso getchar, pero el programa no se ejecuta, pero necesito leer un carácter de nueva línea o el final del archivo EOF antes de generarlo.
Una explicación para este problema es que cuando los expertos escribieron C, no existía el llamado concepto de entrada de terminal. Todas las entradas en realidad se leían desde archivos y los archivos generalmente se leían en forma de comportamiento. como una unidad. Por lo tanto, solo cuando se encuentra un carácter de nueva línea, el programa considerará que la entrada ha finalizado y luego ejecutará otras partes del programa. Al mismo tiempo, se accede a la entrada en forma de archivo, por lo que se requiere EOF (Enf del archivo) para finalizar la entrada de un archivo. Es por eso que getchar usa EOF al salir de la entrada.
2.2. El valor de retorno de getchar() suele ser un carácter, pero también puede ser un número negativo, es decir, se devuelve e of.
El punto a enfatizar aquí es que la función getchar generalmente devuelve los caracteres ingresados por el terminal, y los valores ASCII correspondientes de estos caracteres en el sistema no son negativos. Por lo tanto, muchas veces escribiremos dos líneas de código como esta:
char c;
c = getchar();
Esto probablemente cause problemas. Porque la función getchar no solo devuelve los caracteres ingresados por la terminal, sino que también devuelve EOF cuando se encuentra CTRL D (en Linux), que es el terminador de archivo EOF, que generalmente se define como -1 en la biblioteca de funciones. Entonces, en este caso, la función getchar devuelve un valor negativo y es incorrecto asignar un valor negativo a una variable de tipo char. Para que la variable definida contenga todos los valores posibles devueltos por la función getchar, el método de definición correcto es el siguiente (k amp; Este problema se menciona específicamente en la "Constitución de la República Popular China":
int c;
c = getchar();
Este artículo proviene del blog de CSDN, indique la fuente al reimprimir: /minmin tuo/archive/2009/03 /24/4021337.aspx