Sábado 14 de Diciembre de 2024, 13:44
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Copiar fichero
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Copiar fichero (Leído 2682 veces)
alex1510
Miembro activo
Mensajes: 35
Copiar fichero
«
en:
Lunes 2 de Noviembre de 2009, 20:06 »
0
Hola buenas.
Expongo el siguiente codigo que no consigo que haga lo que quiero y no se donde esta el problema. La intencion que tengo es coger un archivo y ir copiando tres lineas cada cierto tiempo a otro, es decir, que al final tendre el mismo archivo pero que se ha ido rellenando con el tiempo. He puesto un retardo de 10 segundos para que se rellenen las 3 lineas.
main ( )
{
FILE *fin;
FILE *fout;
char linea[300];
char x;
int i;
reinicio:
if (((fin = fopen("PartHistory.plf", "r")) == NULL) || ((fout = fopen("Prueba.txt" , "a")) == NULL))
{
if (fout != NULL) fclose (fout) ;
{
if (fin != NULL) fclose (fin) ;
printf ("Error en la apertura de ficheros de salidan" );
}
return 1;
}
i=0;
do {
fgets(linea,300,fin);
fputs (linea, fout);
i=i+1;
}
while (i<3);
goto reinicio;
fclose (fin);
fclose (fout);
return 0;
Sleep(10000);
}
Por favor, si alguien detecta mi error. Lo que me ocurre es que se ejecuta la primera vez, y luego se cierra el programa. Utilizo dev-c++. Muchas gracias
Tweet
lostshell
Miembro activo
Mensajes: 35
Re: Copiar fichero
«
Respuesta #1 en:
Lunes 2 de Noviembre de 2009, 21:46 »
0
hay 2 problemas que detecte a simple vista
1 .estas lineas nunca se ejecutan
Código: Text
fclose (fin);
fclose (fout);
return 0;
Sleep(10000);
por que se va a "reinicio"
Código: Text
goto reinicio;
2. El archivo nunca se cierra por lo anterior mencionado
alex1510
Miembro activo
Mensajes: 35
Re: Copiar fichero
«
Respuesta #2 en:
Lunes 2 de Noviembre de 2009, 22:49 »
0
si, eso yo también lo se, pero el programa, extrañamente se cierra después de la primera ejecución. me puede decir como lo puedo hacer??porque ha entendido lo que pretendo verdad??gracias por atenderme
killrazor
Miembro activo
Mensajes: 44
Re: Copiar fichero
«
Respuesta #3 en:
Martes 3 de Noviembre de 2009, 11:39 »
0
Yo lo que haria, ademas de copiar en la pizarra 1000 veces que no usaras nunca mas el goto en un programa
, seria separar las dos funcionalidades. Por un lado, olvidate del retardo de 10 segundos y haz una funcion que copie las tres ultimas lineas, y despues usa un pequeño menu de toda la vida que en caso de que le des al numero uno, te copie las 3 ultimas filas.
Una vez te funcione, juega con el tiempo. Lo que yo veo es que con el goto, vuelves a reinicio, sin pasar por el sleep. Al copiar las tres lineas no cierras el archivo, entonces el programa llega al goto, sube hasta reinicio y vuelve a abrir los archivos sin haberlos cerrado previamente, entonces seguramente da un error, los archivos se cierran (por eso tu percepcion es que se ejecuta la primera vez), y acto seguido el programa devuelve un 1.
Creo que el goto hace que tu programa pierda todo tipo de orden, asi que si puedes intenta pensarlo de otra manera, como por ejemplo:
Código: C++
while
(
!
SALIR
)
{
abrirFicheros
(
in, out
)
;
copiarFilas
(
3
)
;
cerrarFicheros
(
in, out
)
;
sleep
(
10000
)
;
}
Donde la condicion salir puede ser la pulsacion de una tecla, o un numero de filas copiadas o lo que tu quieras.
alex1510
Miembro activo
Mensajes: 35
Re: Copiar fichero
«
Respuesta #4 en:
Martes 3 de Noviembre de 2009, 21:25 »
0
Gracias por la respuesta. Ya habia oido que el goto no le utilizara. Muchas gracias por la respuesta. Yo el problema que veo es al llegar al final del archivo, que no se lo que haría. Gracias
alex1510
Miembro activo
Mensajes: 35
Re: Copiar fichero
«
Respuesta #5 en:
Martes 3 de Noviembre de 2009, 23:08 »
0
Ya estoy realizando el programa, pero me encuentro con un problema. Si cierro el archivo de entrada, al volverlo a abrir, como puedo leer las 3 siguientes lineas siguientes a las anteriores, es decir, como se donde deje de leer antes de cerrar el archivo. Gracias
killrazor
Miembro activo
Mensajes: 44
Re: Copiar fichero
«
Respuesta #6 en:
Martes 3 de Noviembre de 2009, 23:36 »
0
Con un contador interno, que acumule las veces que has leido el archivo.
alex1510
Miembro activo
Mensajes: 35
Re: Copiar fichero
«
Respuesta #7 en:
Martes 3 de Noviembre de 2009, 23:41 »
0
no puedo situar ub puntero??
killrazor
Miembro activo
Mensajes: 44
Re: Copiar fichero
«
Respuesta #8 en:
Miércoles 4 de Noviembre de 2009, 09:12 »
0
Pues yo se que SEEK podemos poner el cursor (no puntero) en un sitio determinado del archivo, pero esto es para ficheros binarios. Ahora mismo no se si se puede hacer por lineas, pero creo que no.
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Copiar fichero