[C con Clase] consulta

Steven Davidson steven en conclase.net
Vie Mar 2 19:21:41 CET 2007


Hola Fabio,

El pasado 2007-03-02 17:16:48, fabio escribió:

f> hola a todos, tengo una consulta: porque cuando ingreso los caraceres en el primer "for" no se corta al ingresar el décimo caracter , sino que  me permite seguir ingresando hasta apretar el enter y no como yo pretendía que al ingresar el caracter numero 10 salga de ese for y se ejecute el siguiente y los muestre en el siguiente renglón lo ingresado.

Me temo que el comportamiento que describes no es estándar y por tanto la función 'getchar()' no funcionará como esperas. Ten presente que las funciones estándares para entrada y salida no controlan directamente el teclado y la pantalla, respectivamente.

Cuando se introducen caracteres por el teclado, éstos pasan a un área de almacenamiento (llamémoslo "búfer") en la memoria del sistema. Las funciones estándares simplemente leen cuantos caracteres deben desde este búfer y los extrae. Por ejemplo, el usuario escribe:

estoy escribiendo un mensaje[ENTER]

En líneas general, tendremos lo siguiente, en el búfer:

teclado <- "estoy escribiendo un mensaje\n"

Desde tu programa de C/C++, invocas 'getchar()' que simplemente lee y extrae el primer carácter del búfer del teclado. Después de 10 llamadas, tenemos lo siguiente:

texto <- "estoy escr"
búfer <- "ibiendo un mensaje\n"

Como puedes ver, existen más caracteres en el búfer del teclado. De hecho, si intentas hacer otra lectura, te "toparás" con los caracteres ya existentes, sin siquiera pedirlos al usuario.

Si necesitas un mayor control del teclado, entonces necesitarás usar funciones especiales y por tanto no estándares que dependan de la plataforma. Por ejemplo, si usas un compilador de Borland, tendrás acceso a la biblioteca "conio" cuyas funciones servirán para este fin.


Espero haber aclarado la duda.

Steven


Más información sobre la lista de distribución Cconclase