Título: Duda EOF Publicado por: pedroedlp en 8 Abril 2014, 23:30 pm bueno, basicamente no entiendo que es lo que hace EOF, les dejo ete programa que en teoria imprime la linea de entrada mas larga, pero yo ejecuto el programa y no hace nada, solo espera q le ingrese datos por teclado, yo creo que es por algo del EOF, que siempre da verdadero el while.
Código: #include <stdio.h> Título: Re: Duda EOF Publicado por: rir3760 en 9 Abril 2014, 03:13 am basicamente no entiendo que es lo que hace EOF Es una macro definida en <stdio.h> con un valor menor que cero (usualmente -1) y es el valor de retorno de algunas funciones de la biblioteca estándar (por ejemplo getchar) para indicar que la operación de lectura fallo al alcanzar el final del archivo.les dejo ete programa que en teoria imprime la linea de entrada mas larga Es uno de los ejemplos del libro "The C programming language".pero yo ejecuto el programa y no hace nada, solo espera q le ingrese datos por teclado, yo creo que es por algo del EOF, que siempre da verdadero el while. Es el comportamiento normal. Como se procesa la entrada estándar debes introducir varias lineas y a continuación la señal de fin de archivo ({CONTROL} + Z en MS Windows y {CONTROL} + d en Linux). Solo entonces el programa imprimirá la linea mas larga.Un saludo Título: Re: Duda EOF Publicado por: pedroedlp en 11 Abril 2014, 03:41 am Es una macro definida en <stdio.h> con un valor menor que cero (usualmente -1) y es el valor de retorno de algunas funciones de la biblioteca estándar (por ejemplo getchar) para indicar que la operación de lectura fallo al alcanzar el final del archivo. Es uno de los ejemplos del libro "The C programming language". Es el comportamiento normal. Como se procesa la entrada estándar debes introducir varias lineas y a continuación la señal de fin de archivo ({CONTROL} + Z en MS Windows y {CONTROL} + d en Linux). Solo entonces el programa imprimirá la linea mas larga. Un saludo yo apreto ctrl + z y no pasa nada, me aparece el ^Z Título: Re: Duda EOF Publicado por: rir3760 en 11 Abril 2014, 05:26 am Introduces la combinación de teclas y a continuación presionas la tecla {ENTER}.
Un saludo Título: Re: Duda EOF Publicado por: pedroedlp en 11 Abril 2014, 19:50 pm Introduces la combinación de teclas y a continuación presionas la tecla {ENTER}. Un saludo perdon, pero no me funciona Título: Re: Duda EOF Publicado por: leosansan en 11 Abril 2014, 21:00 pm perdon, pero no me funciona Funcionar, lo que se dice funcionar, funciona. Otra cosa es que los resultados sean los previstos, que no lo son. Además de declarar main como int inicializo max a cero, que no lo estaba y la salida poniendo un printf justito después del while: Código
Citar 123 len=1 12345 len=1 1234567 len=1 12 len=1 ^Z 123 Process returned 0 (0x0) Al parecer la variable len no pilla el retorno de la función, al menos dentro del while ¿?. :huh: En cambio si la sacamos del while funciona perfecto. Lo he ajustado para que al entrar un enter solitario, sin nada en la linea, se acabe la ejecución sin así tener que recurrir al CTR-Z: Citar 123 len=4 max=4 12345 len=6 max=6 123456789 len=10 max=10 3215 len=5 32 len=3 1 len=2 <==ESTO ES UN ENTER SOLITARIO len=1 Cadena mas larga: 123456789 Process returned 0 (0x0) Código
Aún no le encuentro justificación al comportamiento de len dentro del while. :silbar: ¡¡¡¡ Saluditos! ..... !!!! (http://st.forocoches.com/foro/images/smilies/aaaaa.gif) Título: Re: Duda EOF Publicado por: pedroedlp en 11 Abril 2014, 21:19 pm Funcionar, lo que se dice funcionar, funciona. Otra cosa es que los resultados sean los previstos, que no lo son. Además de declarar main como int inicializo max a cero, que no lo estaba y la salida poniendo un printf justito después del while: Código
Al parecer la variable len no pilla el retorno de la función, al menos dentro del while ¿?. :huh: En cambio si la sacamos del while funciona perfecto. Lo he ajustado para que al entrar un enter solitario, sin nada en la linea, se acabe la ejecución sin así tener que recurrir al CTR-Z: Código
Aún no le encuentro justificación al comportamiento de len dentro del while. :silbar: ¡¡¡¡ Saluditos! ..... !!!! (http://st.forocoches.com/foro/images/smilies/aaaaa.gif) muchas gracias Título: Re: Duda EOF Publicado por: leosansan en 11 Abril 2014, 21:25 pm muchas gracias De nada campeón. Y espero que alguien más lucido nos explique el por qué del comportamiento anómalo de len en el while. ¡¡¡¡ Saluditos! ..... !!!! (http://st.forocoches.com/foro/images/smilies/aaaaa.gif) Título: Re: Duda EOF Publicado por: rir3760 en 12 Abril 2014, 16:58 pm Funcionar, lo que se dice funcionar, funciona. Otra cosa es que los resultados sean los previstos, que no lo son. A la variable "max" se le asigna el valor cero justo antes del bucle, con ella no hay problema.Además de declarar main como int inicializo max a cero, que no lo estaba El error se encuentra en el bucle while, al copiar el programa se colocaron mal los paréntesis: Código Para que funcione correctamente basta con cambiarlo a: Código
Un saludo |