elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  getchar() != EOF
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: getchar() != EOF  (Leído 15,149 veces)
Treppe

Desconectado Desconectado

Mensajes: 15


Ver Perfil
getchar() != EOF
« en: 18 Julio 2011, 13:41 pm »

Hola, esto viene en relación con un problema que tuve anteriormente ya solucionado. Bueno comprobando lo que me dijeron llegué a hacer el siguiente programa:

#include <stdio.h>

main()
{
      int c;
      while ((c = getchar())!= EOF)
            printf("%d\t\n", ((c = getchar()) != EOF));
            putchar(c);
}

 En fin, el caso es que quisiera saber como puedo verificar que la expresión getchar() != EOF es 0 o 1. Y a parte de eso quiero saber como imprimir el valor de EOF. La verdad es que estoy un poco perdido, le he dado vueltas pero no lo encuentro, aunque descubrí algo, cuando abro el programa y escribo EOF sale " 1 1" tal vez sea eso?, y si no lo se... qué es? xD gracias por las molestias  :)


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: getchar() != EOF
« Respuesta #1 en: 18 Julio 2011, 16:27 pm »

Bueno comprobando lo que me dijeron llegué a hacer el siguiente programa:

#include <stdio.h>

main()
{
      int c;
      while ((c = getchar())!= EOF)
            printf("%d\t\n", ((c = getchar()) != EOF));
            putchar(c);
}
Si vas a aprender C te conviene hacerlo bien, la definición de la función main debe ser "int main(void) ..." o bien "int main() ..." y se debe indicar su valor de retorno con al menos "return 0;".

Un problema importante en tu programa es que lees dos caracteres dentro del bucle: uno en la condición y otro en la llamada a printf. Y lo que se ejecuta en el bucle solo es la primera sentencia ya que faltan las llaves.


Como verificar que la expresión "(c = getchar()) != EOF" resulte en 1 o 0 esta implícito en tu programa: 1) El bucle se ejecuta solo mientras su condición resulte en un valor distinto de cero y 2) El resultado del operador de desigualdad  "!=" resulta en 1 si los operandos son distintos y 0 en caso contrario (si son iguales).


La macro EOF resulta en un valor de tipo int, puedes imprimirla como cualquier variable de ese tipo.

El programa con esas correcciones es:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void)
  5. {
  6.   int c;
  7.  
  8.   while ((c = getchar()) != EOF)
  9.      putchar(c);
  10.  
  11.   printf("EOF == %d\n", EOF);
  12.  
  13.   return EXIT_SUCCESS;
  14. }

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Treppe

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: getchar() != EOF
« Respuesta #2 en: 19 Julio 2011, 13:42 pm »

Ok, gracias. Pero hay otra cosa que no entiendo que creo que es fundamental para esto xD. Es sobre la salida y entrada de caráctares, no entiendo muy bien el concepto... en qué consiste?, en donde se efectua?, para que sirve?.
« Última modificación: 19 Julio 2011, 13:56 pm por Treppe » En línea

[L]ord [R]NA


Desconectado Desconectado

Mensajes: 1.513

El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Re: getchar() != EOF
« Respuesta #3 en: 19 Julio 2011, 17:01 pm »

De donde estas estudiando C?
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: getchar() != EOF
« Respuesta #4 en: 19 Julio 2011, 18:21 pm »

Es sobre la salida y entrada de caráctares, no entiendo muy bien el concepto... en qué consiste?, en donde se efectua?, para que sirve?.
Si apenas empiezas con el lenguaje C te conviene tener a la mano un buen libro o curso sobre este, revisa los mensajes fijos en este foro, hay uno sobre el tema.

Cuando un programa se ejecuta se tienen disponibles tres streams (o flujos) de caracteres: la entrada estándar (stdin), la salida estándar (stdout) y la salida estándar para errores (stderr). Ellos te permiten acceder a la entrada y salida del programa en forma de una secuencia de caracteres (un stream en modo texto con algunas limitaciones).

El origen de esos streams depende del entorno. Por ejemplo el programa se puede ejecutar desde un script y su entrada puede ser un archivo de texto o tal vez la salida de otro programa.

De nuevo: para esto nada mejor que un buen libro.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Treppe

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: getchar() != EOF
« Respuesta #5 en: 20 Julio 2011, 21:35 pm »

 Este es el libro que yo cogí del primer del mensaje fijo de este subforo, "El Lenguaje de Programación C"  por Brian W. Kernighan, Dennis M. Ritchie. Alguna otra sugerencia?
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: getchar() != EOF
« Respuesta #6 en: 20 Julio 2011, 21:48 pm »

En mi opinion uno de los mejores libros para aprender C (ademas de K&R2) es el siguiente, por desgracia solo disponible (hasta donde tengo entendido) en ingles:
----
Pointers on C, 1st edition
Kenneth Reek
Addison Wesley, July 25, 1997
ISBN: 0673999866
----

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema con getchar()
Programación C/C++
juanigato 5 9,145 Último mensaje 23 Diciembre 2013, 19:47 pm
por leosansan
ayuda con getchar
Programación C/C++
ometeotl 6 5,137 Último mensaje 10 Octubre 2011, 19:46 pm
por ometeotl
Borrar buffer , como funciona getchar
Programación C/C++
Jomad205 2 10,236 Último mensaje 13 Noviembre 2012, 17:23 pm
por Jomad205
Ayuda con getchar:(
Programación C/C++
TopoJunior 5 3,393 Último mensaje 14 Febrero 2013, 20:53 pm
por durasno
Problema con while y getchar.
Programación C/C++
Spinerker 3 2,598 Último mensaje 17 Octubre 2013, 14:18 pm
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines