Foros del Web » Programación para mayores de 30 ;) » Programación General »

Problema con Ficheros !

Estas en el tema de Problema con Ficheros ! en el foro de Programación General en Foros del Web. El problema es que no se muy bien como se usa fseek(). Tengo que leer un fichero y copiarlo en otro fichero pero inversamente. Esto ...
  #1 (permalink)  
Antiguo 25/05/2004, 05:24
Axo
 
Fecha de Ingreso: abril-2003
Ubicación: Virtual
Mensajes: 953
Antigüedad: 21 años
Puntos: 7
Problema con Ficheros !

El problema es que no se muy bien como se usa fseek(). Tengo que leer un fichero y copiarlo en otro fichero pero inversamente.
Esto es lo que he progamado pero nada de nada... ¿dónde esta el fallo? :s

Código:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
main ()
{
FILE *fichero, *ficherocopia;
char ch;
long tamano,inicial,final;
char *contenido;

  	/* Abrimos el fichero datos.txt en modo lectura*/
	if((fichero=fopen("datos.txt","r"))==NULL)
   {
   printf("Error de lectura con el fichero");
   
   exit(0);
	}
   /*Abrimos el fichero datoscopia.txt en modo escritura*/
   if((ficherocopia=fopen("datoscopia.txt","w+"))==NULL)
   {
   printf("Error de escritura en el DATOS COPIA");

   exit(0);
   }

   inicial = ftell(fichero);
   printf("\n Posicion inicial: %d", inicial);

   fseek(fichero, 0L, SEEK_END);

   final = ftell(fichero);
   printf("\n Posicion final: %d", final);

 while(!feof(fichero))   // Recorremos hasta final de linea...
   {

   	ch=getc(fichero);  //leemos  y almacenamos
      printf("%c", ch);  // Imprimos en pantallas


      // Copiamos caracter a caracter
      if((putc(ch,ficherocopia))==EOF)
      {
      printf("Error de escritura");
      }
      
	}
   
     /*Cerramos ficheros*/
     fclose(fichero);
     fclose(ficherocopia);

getch();
}
  #2 (permalink)  
Antiguo 25/05/2004, 10:59
 
Fecha de Ingreso: mayo-2004
Mensajes: 183
Antigüedad: 20 años
Puntos: 0
HOLA, espero que te ayude lo que pasa es que tu algoritmo solo copia el origen pero no hace el proceso inverso. El problema esta en el ciclo:

while(!feof(fichero))
{
fseek( fichero, final, SEEK_SET );//te coloca en la posicion final
ch=getc(fichero); //leemos y almacenamos
printf("%c", ch); // Imprimos en pantallas

// Copiamos caracter a caracter
if((putc(ch,ficherocopia))==EOF)
{
printf("Error de escritura");
}
final--;//restamos la posicion final
}


Espero que te ayude por que no se utilizar el fseek,
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:14.