[C con Clase] consulta

fabio german voigt fabiogvoigt en yahoo.com.ar
Dom Mar 4 16:38:39 CET 2007


entendido, mauchas gracias Diego.
   Fabio.

D1e6o! <diegogeid en gmail.com> escribió:
  Creo que estás confunciendo la instrucción getchar() con getch() que si toma un caracter (y no es estandar, depende del compilador...), procesa y vuelve a tomar otro caracter, no como el anterior que almacena en un buffer temporal la entrada del teclado y lo procesa cuando haya un retorno.... 

deberías agregar la biblioteca conio.h, reemplazar los getchar() por getch() y putchar() por putch()... por ejemplo  en borland o dev c funciona bien:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
main()
{
  int cont, aux;
  char texto[80];
  for(cont=0; cont< 10; ++cont)
      texto[cont]= getche();
  printf("\n\n");       
   for(cont=0; cont< 10 ; ++cont) 
       putch(texto[cont]);
   printf("\n\n");
    
  system("PAUSE"); 
  return 0;
}

Saludos



  El día 2/03/07, Steven Davidson <steven en conclase.net> escribió:  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
_______________________________________________
Lista de correo Cconclase Cconclase en listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ


_______________________________________________
Lista de correo Cconclase Cconclase en listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ

 		
---------------------------------
 Preguntá. Respondé. Descubrí.
 Todo lo que querías saber, y lo que ni imaginabas,
 está en Yahoo! Respuestas (Beta).
 Probalo ya! 
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20070304/af812838/attachment.html>


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