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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con "Copia de archivos" que aparece en el manual de Kernighan and Ritchie
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con "Copia de archivos" que aparece en el manual de Kernighan and Ritchie  (Leído 6,175 veces)
Pink Floydiano

Desconectado Desconectado

Mensajes: 27


¡Arriba! Ya dormirás bastante en la sepultura.


Ver Perfil
Ayuda con "Copia de archivos" que aparece en el manual de Kernighan and Ritchie
« en: 29 Enero 2011, 20:05 pm »

Buenas.

Recientemente, me he bajado el manual para aprender lenguaje C de Kernighan and Ritchie. Me está pareciendo bastante educativo y estoy intentado asimilar todo lo posible  :)

Sin embargo, he llegado a un punto en el que me he atascado un poco y me preguntaba si alguno podría ayudarme. He de decir que soy completamente nuevo en esto, así que pido disculpas si la pregunta les parece tonta (nunca antes me había puesto a aprender un lenguaje de programación).

El problema en cuestión está en el capítulo 1.5.1, llamado "Copia de archivos". En él, puede verse el siguiente programa:

Código:
#include <stdio.h>

main()
{
        int c;

        c= getchar();
        while (c!= EOF) {
                putchar(c);
                c= getchar();
        }
}

Entonces, tengo dos preguntas:

1) A pesar de que en el manual explican cada uno de los componentes, creo que no acabo de entender para qué sirve  :-[ Lo he ejecutado y simplemente copia las palabras que meto en la consola... ¿Alguien me explica la utilidad de este programilla?

2) Al final del capítulo me proponen como ejercicio "Verifique que la expresión getchar ()!= EOF es 0 o 1" y "Escriba un programa que imprima el valor de EOF". Aquí, al igual que antes, no entiendo lo que me piden...

Muchas gracias a todos de antemano por la ayuda.


En línea

Ubuntu user.
Android user.
Linuxero :)
Ferno


Desconectado Desconectado

Mensajes: 375


Ver Perfil
Re: Ayuda con "Copia de archivos" que aparece en el manual de Kernighan and Ritchie
« Respuesta #1 en: 29 Enero 2011, 20:16 pm »

Lo que estás haciendo con dicha función es ir tomando caracter a caracter de un archivo (en este caso, stdin, el archivo de entrada por defecto; es decir, la consola), y pegándolos (en este caso también en el archivo de salida por defecto, la consola).

Para que te quede un poco más claro, si utilizas este algoritmo y getchar() en un archivo de texto plano (.txt por ejemplo), de cualquier lugar de tu computadora, copiará el contenido del archivo de texto y lo pegará en la pantalla (puede ser otro archivo de texto, o también la consola). Pero para aprender esto necesitarás saber manejo de archivos (no recuerdo si hay algo relacionado en el libro de K&R).

Con respecto a tu punto 2). EOF hace referencia a End Of File. Cuando estás leyendo un archivo, y éste termina (por ejemplo, termina de leer todo un texto en el .txt) hay una marca llamada EOF, que le avisa al programa que ese archivo ha llegado a su fin. Este se lee con por ejemplo, getchar() y posee un valor. Cuando llega a ese valor, en el algoritmo que tu escribiste, sale del ciclo, y deja de leer, puesto que sabe que llegó a su fin.


En línea

Pink Floydiano

Desconectado Desconectado

Mensajes: 27


¡Arriba! Ya dormirás bastante en la sepultura.


Ver Perfil
Re: Ayuda con "Copia de archivos" que aparece en el manual de Kernighan and Ritchie
« Respuesta #2 en: 29 Enero 2011, 20:44 pm »

Ah! Ya entiendo la función del programa, muchísimas gracias  ;-)

Por cierto, según he leído en el manual, hay una forma más sencilla de expresar el programa que he puesto antes, es ésta:

Código:
#include <stdio.h>

main()
{
int c;

while((c= getchar()) != EOF)
putchar(c);
}

Pero lo que sigo sin comprender es la parte en la que me piden que "imprima el valor de EOF". Entiendo lo que propone el ejercicio, pero no tengo ni la más mínima idea de cómo comenzar a hacer este programa... ¿Algún consejo?
« Última modificación: 29 Enero 2011, 20:50 pm por Pink Floydiano » En línea

Ubuntu user.
Android user.
Linuxero :)
Ferno


Desconectado Desconectado

Mensajes: 375


Ver Perfil
Re: Ayuda con "Copia de archivos" que aparece en el manual de Kernighan and Ritchie
« Respuesta #3 en: 29 Enero 2011, 21:02 pm »

Si, revisa tu algoritmo. El ciclo itera siempre y cuando c sea distinto de EOF.
Por ende, este saldrá del ciclo cuando c sea igual a EOF.
Ahora bien, ya sabes que luego de salir del ciclo, tendrás EOF en la variable c. Lo único que queda por hacer es imprimirla en la pantalla.
Escribe una sentencia que imprima en la pantalla la variable c. Y listo ^^
Saludos!
En línea

Pink Floydiano

Desconectado Desconectado

Mensajes: 27


¡Arriba! Ya dormirás bastante en la sepultura.


Ver Perfil
Re: Ayuda con "Copia de archivos" que aparece en el manual de Kernighan and Ritchie
« Respuesta #4 en: 29 Enero 2011, 22:07 pm »

Para resolver el problema que me preguntan, he probado con lo siguiente:

Código:
#include <stdio.h>

main()
{
        int c;

        c= EOF;
printf("%d\n", c);

}

Como se supone que ahora c=EOF, al imprimir c estoy imprimiendo el EOF. Cuando ejecuto este programa en la consola, me aparece un "-1".

¿Está bien o he hecho una tontería  :xD ?

PD: Vuelvo a repetir mi escasa experiencia como posible disculpa ante la locura que haya podido hacer  :-[
En línea

Ubuntu user.
Android user.
Linuxero :)
Ferno


Desconectado Desconectado

Mensajes: 375


Ver Perfil
Re: Ayuda con "Copia de archivos" que aparece en el manual de Kernighan and Ritchie
« Respuesta #5 en: 29 Enero 2011, 22:17 pm »

De http://es.wikipedia.org/wiki/EOF :

"La interpretación de C como resultado de la operación de lectura en caso de ser EOF es, por lo general, -1."

Así que no estás tan loco :P
En línea

Pink Floydiano

Desconectado Desconectado

Mensajes: 27


¡Arriba! Ya dormirás bastante en la sepultura.


Ver Perfil
Re: Ayuda con "Copia de archivos" que aparece en el manual de Kernighan and Ritchie
« Respuesta #6 en: 29 Enero 2011, 22:21 pm »

Muchísimas gracias Ferno, con gente como tú da gusto aprender  ;)
En línea

Ubuntu user.
Android user.
Linuxero :)
negux

Desconectado Desconectado

Mensajes: 63


Ver Perfil
Re: Ayuda con "Copia de archivos" que aparece en el manual de Kernighan and Ritchie
« Respuesta #7 en: 1 Febrero 2011, 23:37 pm »

Aqui esta otra version para imprimir el valor de EOF

Código
  1.  
  2. #include<stdio.h>
  3. int main()
  4. {
  5.   printf("EOF = %d\n",EOF);
  6.  
  7.   return 0;
  8. }
  9.  
En línea

flacc


Desconectado Desconectado

Mensajes: 854



Ver Perfil WWW
Re: Ayuda con "Copia de archivos" que aparece en el manual de Kernighan and Ritchie
« Respuesta #8 en: 4 Febrero 2011, 07:03 am »

de donde lo bajaste?, es ta en español?... podrías pasarme el link por favor?...gracias
En línea

Ferno


Desconectado Desconectado

Mensajes: 375


Ver Perfil
Re: Ayuda con "Copia de archivos" que aparece en el manual de Kernighan and Ritchie
« Respuesta #9 en: 4 Febrero 2011, 14:40 pm »

de donde lo bajaste?, es ta en español?... podrías pasarme el link por favor?...gracias

En el topic de Libros/papers de esta misma sección (el primero) se encuentra la versión en español y la versión en ingles.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Archivos de audio "Demo" en formato "jsp"
Multimedia
IVANNA 4 5,017 Último mensaje 13 Septiembre 2005, 21:56 pm
por IVANNA
[Ayuda] modificar "start page" en "internet explorer" con "batch"
Scripting
taton 7 16,580 Último mensaje 20 Septiembre 2006, 01:45 am
por taton
No me aparece la opcion "responder" en un foro en concreto
Sugerencias y dudas sobre el Foro
bassjaxx 2 2,468 Último mensaje 7 Octubre 2010, 19:53 pm
por bassjaxx
mi pce cuando se enciende aparece unas letra que dice "PROBLEMA EN EL ARRANQUE"
Windows
davidxto 7 6,057 Último mensaje 21 Septiembre 2011, 01:46 am
por Garcad
AYUDA POR FAVOR AL INICIAR EL PC APARECE "FALTA BOOTMGR"
Windows
antofagasta91 4 5,301 Último mensaje 14 Diciembre 2011, 18:31 pm
por Randomize
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines