Cómo utilizar la entrada de corriente en la programación c
Las funciones de entrada / salida básicos en C no son interactivos, lo que significa que no se sientan y esperan a que escriba el texto en el teclado. Esa es la forma que espera utilizar un programa informático: Usted escribe de entrada, y el programa reacciona directamente. Pero la entrada estándar en C no es personaje basado, es corriente en base.
Con basado-stream de entrada, un programa se ve en la entrada como si fuera derramada de una jarra. Todos los personajes, incluyendo Enter, marchar en una tras otra. Sólo después de que se reciba una porción determinada de texto, o la entrada se detiene por completo, ¿el extremo de aguas. Este concepto puede ser frustrante a cualquier principio C programador.
Fundamentos de la entrada de corriente
Considere el código ilustra en Frustrado por flujo de entrada. Parece que el código lee la entrada hasta que se encuentra el período. En ese punto, usted suponer que de entrada se detendría, pero eso no es anticipar el flujo de entrada.
Frustrado por flujo de entrada
#include int () {char i-do {i = getchar () - putchar (i) -} while (i =! '.') - putchar (' n') - retorno (0) -} principal
Ejercicio 1: Escriba el código fuente desde Frustrado por flujo de entrada en un editor. Genere y ejecute para probar el programa. Escriba una gran cantidad de texto y un período para ver qué pasa.
He aquí cómo funciona:
Esto es un examen. Ello's sólo una prueba.Esto es un examen.
En términos generales, el programa no detiene la entrada después de escribir un periodo. La primera línea en el ejemplo anterior es la corriente, como una manguera de incendios personajes fugaces en el programa. El programa se comporta correctamente, el procesamiento de la corriente y detener su pantalla después de que se encontró con el período. El Introduzca saques clave como una ruptura en la corriente, que el programa utiliza para digerir la entrada hasta ese punto.
¿Cómo lidiar con el flujo de entrada
A pesar de la orientación corriente del lenguaje C, existen maneras de crear programas más o menos interactivas. Usted simplemente tiene que abrazar el flujo de entrada y tratar con él en consecuencia.
El código fuente de pesca de caracteres en el flujo debería ser bastante sencillo para usted. La función getchar () recupera dos personajes y los personajes se muestran en la línea 11.
PESCA DE PERSONAJES EN LA SECUENCIA
#include int main () {char primera, segunda printf ("Escriba su primera inicial:") -primer = getchar () - printf ("Escriba su segunda inicial:") -segunda = getchar () - printf ("Su iniciales son '% c' y '% c' n ", primera, segunda) -Retorno (0) -}
Ejercicio 2: Escriba el código fuente de la pesca de caracteres en el flujo en su editor. Línea 11 se divide por lo que no wrap usted no tiene que dividir la línea en su editor. Genere y ejecute usando sus iniciales como entrada.
Aquí está la salida:
Escriba su primera inicial: DEscriba su segunda inicial: Sus iniciales son 'D' y ''
Nunca dio la oportunidad de entrar en su segunda inicial. La corriente incluida la prensa tecla Enter, que el programa acepta como entrada para la función de segundo getchar (). Ese personaje, n, se muestra en la salida entre las comillas simples.
¿Cómo funciona el programa? Sencillo: Escriba las dos iniciales en la primera línea de comandos:
Escriba su primera inicial: DGEscriba su segunda inicial: Sus iniciales son 'D' y 'G'
Por supuesto, eso no es lo que el código pide. Entonces, ¿cómo solucionarlo? ¿Se puede pensar en una solución con sus programadores actuales de la bolsa o 'trucos?
No te rindas!
La solución consiste en idear una función que devuelve el primer carácter de la corriente y luego se traga el resto de los personajes hasta que se encontró con el n. Esa función se parece a una función de entrada de un solo carácter, Getch ():
Una función de entrada de un solo carácter, Getch ()
getch char (void) {char ch-ch = getchar () -, mientras que (getchar () = ' n'!) - retorno (ch) -}
Para envolver su cerebro alrededor de entrada corriente, considere que el bucle while en una función de entrada de un solo carácter, Getch () gira a través de todo el texto en la corriente hasta que se encuentre una nueva línea. A continuación, el primer carácter de la corriente, se agarró a la Línea 5, se devuelve desde la función.
Ejercicio 3: Modificar el código fuente del Ejercicio 2, de modo que la función getch () se ilustra en una función de entrada de un solo carácter, Getch () se utiliza para reunir información. Genere y ejecute para asegurar que la salida es lo que el usuario podría anticipar.
Si quieres programas verdaderamente interactivos, se utiliza una biblioteca de lenguaje C que ofrece funciones interactivas. La biblioteca ncurses es grande, ya que tiene dos funciones de entrada y salida que permiten crear programas de texto a pantalla completa que son inmediatamente interactiva.