• Viernes 19 de Abril de 2024, 23:58

Autor Tema:  Problema Con Entrada Estandar En C  (Leído 1368 veces)

Anthares

  • Nuevo Miembro
  • *
  • Mensajes: 14
  • Nacionalidad: uy
    • Ver Perfil
Problema Con Entrada Estandar En C
« en: Domingo 6 de Abril de 2008, 04:41 »
0
Hola  :o  tengo quiero leer de la entrada estandar de a un carácter, ya sea una letra del alfabeto, un símbolo especial, fin de linea etc… hasta que agluien ingrese un fin de archivo, es decir un "control + d".

Para ello probe en usar: fgetc, getc, getchar.
Hago un ciclo while carácter leido sea distinto de EOF.

Pero sucede algo que no quiero y no se como solucionarlo.

Si ejecuto mi programa e ingreso minimo un carácter  y hago control + d  no se termina si no que tengo que por segunda vez hacer control + d.

Si por otro lado minomo ingreso un carácter luego hago control + d luego ingreso minimo un carácter luego contol + d no sale, es decir solo sale si hago dos veces consecutivas control +d.

Pero yo quiero que cuando hago control +d  finalize y no tenga que hacerlo dos veces consecutivas.

Que puedo estar haciendo mal ¿??????

Por ejemplo si ejecutan este codigo van a ver que les pasa eso:

#include <stdio.h>
int main()
{

while( EOF != getc(stdin));


return 0;
}

A una cosa mas, no me sirve hacer control + c por que eso hace que termine la ejecución abruptamente yo solo quiero que cuando haga una vez sola control + d termine de leer de la entrada estandar para hacer otra cosa.


Espero que alguien me de una mano  :huh:  saludos

grandzam

  • Miembro MUY activo
  • ***
  • Mensajes: 118
    • Ver Perfil
Re: Problema Con Entrada Estandar En C
« Respuesta #1 en: Domingo 6 de Abril de 2008, 09:51 »
0
Ya intentaste con esto:

Código: Text
  1.  
  2. while( !feof(stdin)){
  3.   scanf(&#34;%s&#34;,string);
  4. }
  5.  
  6.  

Bueno yo creo que asi deberia funcionar, pruebalo...

Ah por cierto, probe el tuyo en mi ubuntu y funciono bien, se sale cuando presiono ctrl+d sin importar nada, no tuve que hacerlo dos veces...

Anthares

  • Nuevo Miembro
  • *
  • Mensajes: 14
  • Nacionalidad: uy
    • Ver Perfil
Re: Problema Con Entrada Estandar En C
« Respuesta #2 en: Domingo 6 de Abril de 2008, 14:26 »
0
Hola muchas muchas gracias lo voy a intentar con eso.

Tambien te cuento que vi en el deitel que dice que en los sistemas Linux el EOF se ingresa con <enter> + <control + d >

Intente con eso y lo que yo habia hecho funciono como  yo queria pero voy a intentar con lo tuyo por que si anda esta mucho mejo que no tenga que entrar un enter antes

Saludos y muchas muchas gracias  :D  :lol:

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Problema Con Entrada Estandar En C
« Respuesta #3 en: Miércoles 9 de Abril de 2008, 05:12 »
0
Sería bueno que guardes en una variable lo que obtienes de getc(stdin) y compares el EOF con la variable.

¿Será que en alguna parte de tu ciclo while vuelves a leer un caracter con getc(stdin) y es por eso que necesitas 2 control+D: uno para cada getc que tienes dentro del ciclo?