Título: Archivos Publicado por: m@o_614 en 28 Agosto 2013, 21:16 pm Saludos
Tengo que hacer un programa que copie todos los caracteres de un archivo fuente a uno destino, ya he creado el archivo fuente (el que contiene los caracteres), y ya lo pude abrir, el problema es que no se muy bien como manejar archivos y como hacer que me recorra toda la linea de caracteres y copiarlos en otro archivo. Código
no les pido que me muestren el codigo, solo que me den una idea de como hacerlo gracias Título: Re: Archivos Publicado por: eferion en 28 Agosto 2013, 21:28 pm Tutoriales en internet al respecto tienes a patadas.
Pon en google "tutorial manejo ficheros c" y tendrás resultados de sobra. Explicártelo a ti en exclusiva es como reinventarse la rueda... Ya esta echo en otro sitio... Es mas cómodo que visites el sitio :P Título: Re: Archivos Publicado por: m@o_614 en 29 Agosto 2013, 02:33 am ya revise algunos tutoriales y me resolvio muchas dudas, el codigo por ahora lo tengo asi:
Código
primero ya que tengo mi archivo con una cadena de caracteres, tengo que pasarlas a otro archivo, y es ahi donde no se que hacer, si crear el archivo destino(a donde voy a copiar los caracteres), de esta manera: Código
y pasarle ad a la funcion read Código
o crear un array tipo char para ahi almacenar la cadena del archivo fuente Código
Título: Re: Archivos Publicado por: rir3760 en 29 Agosto 2013, 04:00 am Si no tienes un libro de calidad sobre C deberías conseguir uno, por ejemplo "The C Programming Language", en el se trata el tema de copia de archivos (utilizando la entrada y salida estándar) en el primer capitulo.
Un problema con tu programa es verificar si la función read (http://linux.die.net/man/2/read) (parte del estándar POSIX) retorna NULL para indicar error (en esa situación la función retorna -1). Es mas fácil realizar esa operacion utilizando la biblioteca estándar de C, con ella solo tienes que abrir los archivos con fopen y a continuación utilizar un bucle donde lees un carácter de la entrada y lo envías a la salida. Mas o menos así: Código
Un saludo Título: Re: Archivos Publicado por: m@o_614 en 29 Agosto 2013, 21:35 pm saludos rir3760 todavia no he conseguido el libro pero si encontre algunos tutoriales, si es mas rapida la manera en la que tu lo hiciste pero primero tengo que empezar a trabajar con las funciones basicas, read(), open(), write, etc..
Ahora en este codigo con el fopen(), creo y a la vez abro un archivo.txt para ahi escribir la cadena hola mundo, pero por alguna razon solamente me crea el archivo pero no me escribe la cadena en el archivo.txt Código
gracias Título: Re: Archivos Publicado por: Stereo en 29 Agosto 2013, 21:50 pm Haz un while !feof, usa fgets para obtener los carácteres de cada línea, usa fprintf para escribir en un archivo y termina con fclose para evitar bugs.
Título: Re: Archivos Publicado por: m@o_614 en 30 Agosto 2013, 00:10 am saludos ahora ya por fin ya me escribe hola mundo en el archivo.txt, pero el fopen lo tuve que cambiar por un simple open, y el problema es que con el fopen yo podia crear el archivo y abrirlo al mismo tiempo, y con el open no puedo, el archivo tiene que existir de antemano para poder abrirlo
Código
eso es lo que no entiendo, por que con fopen() no me escribe en el archivo y con open si??? gracias Título: Re: Archivos Publicado por: rir3760 en 30 Agosto 2013, 04:22 am lo que no entiendo, por que con fopen() no me escribe en el archivo y con open si? Porque estas mezclando funciones del estándar POSIX (open y write) con funciones del estándar ISO (fopen).En el caso de write (http://linux.die.net/man/2/write) su primer argumento es el descriptor de archivo y es de tipo int, no puedes pasar el valor de retorno de fopen (http://web.archive.org/web/20110814162917/http://dinkumware.com/manuals/default.aspx?manual=compleat&page=stdio.html#fopen) porque este es de tipo "FILE *". Un saludo Título: Re: Archivos Publicado por: m@o_614 en 30 Agosto 2013, 15:29 pm Muchas gracias, una ultima pregunta
No hay alguna manera de que se pueda utilizar el fopen y pasar su puntero tipo *FILE a la funcion write();???? aunque sean de estandares diferentes EI: juntando mensajes. ya!! ya consegui que me compilara correctamente, lo unico que hice fue cambiar el write() por el fwrite() y ponerle los parametros adecuados Código
|