Autor
|
Tema: Copiar contenido del fichero en otro en C (solucionado) (Leído 38,717 veces)
|
Pirata LOL
Desconectado
Mensajes: 31
|
sin usar cadenas.. el archivo 1 ya esta creado con contenido llevo esta funcion y nose que hacer void crear_datosout(void) { FILE *ptrdatos,*ptrdatos2; char caracter,caracter2; ptrdatos =fopen("archivo1.txt","rt");ptrdatos2 =fopen("archivo2.txt","wt");while (caracter!=EOF) { if (caracter>=92 && <=122) { caracter =fgetc(ptrdatos );caracter2=caracter; fputc(caracter2 ,ptrdatos2 ); } }
que hago??
|
|
« Última modificación: 12 Marzo 2011, 05:03 am por Pirata LOL »
|
En línea
|
[center [/center]
|
|
|
Akai
Desconectado
Mensajes: 823
|
Estás cometiendo un fallo. Tu únicamente consideras que vas a copiar letras. Pero y los espacios o saltos de linea? y otros caracteres especiales?
por otro lado, yo lo enfocaría más como un do{ lo que sea }while(tu verás)
Ya que de esta forma te aseguras que si el fichero estuviese vacío (sólo contuviese el final de fichero) copiases el final de fichero, o en un fichero no vacío, copiases también el final de fichero.
|
|
|
En línea
|
|
|
|
4rkn63l
Desconectado
Mensajes: 199
|
A como dice Akai, estas pasando por alto los saltos de lineas, los espacios en blanco y mas importante aun el EOF. Si tu intencion es copiar solo letras del abecedario en todo caso seria comparar que el valor ascii es >=97 y no >=92 ya que si te fijas en la tabla ascii el valor 92 corresponde al caracter '\'. En todo caso te dejo mi version del programa...tenia rato de no escribir codigo en C #include <stdio.h> #include <stdlib.h> /*copy_file recibe como parametro el nombre del fichero origen y el nombre del fichero destino donde se copiara, devuelve 1 si se copio exitosamente,0 en caso contario*/ int copy_file(char* f_org,char* f_dest); int main() { if(!copy_file("fichero1.txt","fichero2.txt")) printf("El fichero no se pudo copiar\n"); else printf("Fichero copiado exitosamente\n"); return 0; } int copy_file(char* f_org,char* f_dest) { FILE *fp_org,*fp_dest; char c; if(!(fp_org =fopen(f_org ,"rt")) || !(fp_dest =fopen(f_dest ,"wt"))) { perror("Error de apertura de ficheros"); } return 1; return 0; }
|
|
« Última modificación: 8 Marzo 2011, 05:35 am por 4rkn63l »
|
En línea
|
|
|
|
Pirata LOL
Desconectado
Mensajes: 31
|
ambos se equivocan o no se dieron cuenta.. eso que intentan corregirme ya lo pense y lo corregi en esto if (caracter>=97 && <=122) estoy utilizando la tabla ASCII y eso incluye solo las letras minusculas pero probare el codigo de 4rkn63l luego de que arreglue un problema con el compilador de geany en windows gracias Luego respondo a ver si solucione el tema
|
|
« Última modificación: 10 Marzo 2011, 07:14 am por Pirata LOL »
|
En línea
|
[center [/center]
|
|
|
4rkn63l
Desconectado
Mensajes: 199
|
ambos se equivocan o no se dieron cuenta.. eso que intentan corregirme ya lo pense y lo corregi en esto if (caracter>=97 && <=122) omg.... Si tu intencion es copiar solo letras del abecedario en todo caso seria comparar que el valor ascii es >=97 y no >=92 ya que si te fijas en la tabla ascii el valor 92 corresponde al caracter '\'.
|
|
|
En línea
|
|
|
|
Akai
Desconectado
Mensajes: 823
|
estoy utilizando la tabla ASCII y eso incluye solo las letras minusculas Lo que te intenté decir, y veo que parece ser has obviado, es que estás ignorando los espacios, los saltos de linea, los números y todo lo que no sean letras. La tabla ASCII incluye letras mayúsculas, minúsculas, números, y unos cuantos caracteres especiales que suman más que todos los anteriores juntos. Tu verás. PD: Para Windows, posiblemente, te interese usar Code::Blocks (IDE) con mingw (compilador).
|
|
|
En línea
|
|
|
|
Pirata LOL
Desconectado
Mensajes: 31
|
jeje 4rkn63l si leí tu comen sobre la corrección del if >=97 se me olvido agradecerte por esa parte... y Akai creo q tienes razon me podrias decir que hacer para que incluya todo? 2 ciclos? o que tipo de condicion
|
|
|
En línea
|
[center [/center]
|
|
|
Pirata LOL
Desconectado
Mensajes: 31
|
ya arregle el compilador pero probe el codigo de 4rkn63ly me dio muchos errores.. incontables algunas duditas sobre tu codigo int copy_file(char* f_org,char* f_dest); int main() { if(!copy_file("fichero1.txt","fichero2.txt")) printf("El fichero no se pudo copiar\n"); else printf("Fichero copiado exitosamente\n"); return 0; } esta parte del codigo la incluyo en la funcion principal? antes del menu? void copy_file(void) if(!(fp_org=fopen(f_org,"rt")) || !(fp_dest=fopen(f_dest,"wt"))) if(!(fp_org=fopen(f_org.txt,"rt")) || !(fp_dest=fopen(f_dest.txt,"wt"))) { printf("Error de apertura de ficheros"); exit(EXIT_FAILURE); } le agregue el tipo de archivo al txt y use el printf Lo demás lo deje igual y aun así no copia me puedes decir si ya lo probaste? y de ser así y te funcionó podrias decirme en que me equivoco?? Disculpen las molestias pero si no domino una simple copia de archivo no podre avanzar con ejercicios mas complejos y no es la idea
|
|
|
En línea
|
[center [/center]
|
|
|
4rkn63l
Desconectado
Mensajes: 199
|
esta parte del codigo la incluyo en la funcion principal? antes del menu? A que menu te refieres? Recuerda que la version de la funcion que hice yo, tiene distinta definicion tanto de parametros como de valor de retorno, asi que si lo que quieres es implementarla en el programa que estes realizando, deberas de copiar la declaracion(antes de main) y la definicion(despues de main) de la funcion y luego hacer la llamada a dicha funcion desde main, ahora si el programa que estas haciendo es solo para realizar la tarea de copiar los ficheros, pues ya tenes el programa completo ahi. El programa lo compile en linux con gcc y anda bien...compilastes mi version del programa sin ningun cambio? Que errores te da?? Que compilador estas usando?
|
|
|
En línea
|
|
|
|
Akai
Desconectado
Mensajes: 823
|
te lo pongo en pseudocódigo, a partir de ahi ya te apañas tu f1=abrir_fichero(1.lectura) f2=abrir_fichero(2,esctritura)
do{ c=leer_caracter(1) escribir_caracter(2,c) }while(c!=EOF)
cerrar_fichero(1) cerrar_fichero(2)
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Abrir (Ejecutar) un archivo (fichero) contenido en un Jar
Java
|
1mpuls0
|
5
|
9,203
|
8 Noviembre 2009, 17:01 pm
por 1mpuls0
|
|
|
[Solucionado] Renombrar un archivo con el contenido de otro.
Scripting
|
sr_corsario
|
8
|
7,229
|
9 Noviembre 2009, 19:30 pm
por <ИΘZIЭ(ŦB>
|
|
|
copiar el contenido de un fichero caracter por caracter (redireccionado)
Programación C/C++
|
Pirata LOL
|
2
|
5,026
|
22 Febrero 2011, 04:10 am
por Pirata LOL
|
|
|
Ficheros, intento copiar el contenido de un archivo a otro
Java
|
marixxaa
|
8
|
5,082
|
19 Enero 2016, 20:38 pm
por 0xFer
|
|
|
¿Como seleccionar contenido concreto de un fichero y escribirlo en otro?
Ejercicios
|
ayoub20600
|
0
|
3,000
|
19 Mayo 2018, 01:49 am
por ayoub20600
|
|