[C con Clase] consulta

D1e6o! diegogeid en gmail.com
Vie Mar 2 22:59:56 CET 2007


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
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20070302/bbd421f7/attachment.html>


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