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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Unir varios ficheros en uno, escribiendo todas las primeras al principio y suc..
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Unir varios ficheros en uno, escribiendo todas las primeras al principio y suc..  (Leído 2,167 veces)
jpozuelo

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Unir varios ficheros en uno, escribiendo todas las primeras al principio y suc..
« en: 14 Mayo 2016, 19:44 pm »

Buenas tardes amigos.

Estoy trabajando con C,necesito escribir varios ficheros en uno. El problema es que tengo que escribir en el fichero conjunto, todos los datos de los demás en orden. Es decir, al principio, todas las primeras líneas de todos, segunda línea, todas las segundas líneas, etc.

No puedo guardarlo en memoria, pues es un trabajo en BIG Data, y estoy usando 709 ficheros con más de mil líneas de datos cada uno.

¿Cómo lo harían ustedes?

Mil gracias


En línea

jpozuelo

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Unir varios ficheros en uno, escribiendo todas las primeras al principio y suc..
« Respuesta #1 en: 15 Mayo 2016, 09:17 am »

Así lo he hecho y me funciona bien, pero el programa es poco eficiente, es decir, tarda en torno a 20 minutos en recorrer los 709 ficheros.

Lo que he hecho ha sido, leer todas las primeras líneas y escribir,  así sucesivamente para cada fichero. Pero al tener que cerrar y abrir cada fichero para cada línea el programa tarda demasiado.

Por eso ahora la idea que tengo es leer un archivo concreto y escribirlo, dejándo los huecos enter la primera línea y la segunda en cada fichero, pero ahora tengo el problema de al leer el segundo ficchero escribirlo concretamente en la segunda línea....


En línea

jpozuelo

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Unir varios ficheros en uno, escribiendo todas las primeras al principio y suc..
« Respuesta #2 en: 15 Mayo 2016, 10:02 am »

Voy a intentar explicarme mejor. Escribo el modelo de fichero que quiero generar:

linea 1     fichero1
linea1      fichero2
linea1      fichero3
....          .....

linea2     fichero1
linea2     fichero2
....         .....


Mi planteamiento ahora es escribir todo el fichero 1 dejando los huecos para poder escribir los sucessivos ficheros, pero mi problema está, en que una vez escrito el primer fichero, como me posiciono en la segunda línea, la escribir la primera linea del segundo fichero.

Muchas gracias por la colaboración.
En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Unir varios ficheros en uno, escribiendo todas las primeras al principio y suc..
« Respuesta #3 en: 15 Mayo 2016, 15:34 pm »

Así lo he hecho y me funciona bien, pero el programa es poco eficiente, es decir, tarda en torno a 20 minutos en recorrer los 709 ficheros.

¿Cuanto pesan los archivos?
¿Cual es la longitud promedio de la linea?

Puedo hacer un ejemplo con los datos anteriores para ver cuanto tarda en mi computadora.

Realmente es el proceso que te comente en teoría es lo mas eficiente, por que cuando dejas huecos para meter datos tienes que calcular es desplazamiento de donde va quedar el nuevo dato adicional y tendrás que calcular cuanto hueco dejar.

De hecho pensando bien no tienes que estar cerrando y abriendo el archivo destino, simplemente los cierras al final.

Te dejo este codigo de ejemplo, yo asumo que los archivos tienen distinto numero de lineas incluso el programa debe de funcionar para mismo numero de lineas en todos los archivos.

Código
  1. #include<stdio.h>
  2.  
  3. #define N = 700
  4.  
  5. int main() {
  6. int i = 0,entrar = 1,finalizados = 0;
  7. char *nombres[N] = {"Archivo1","Archivo2","Archivo2","Archivo4",...};
  8. char *buffer = calloc(1000,1);
  9. FILE *archivos[N];
  10. FILE *destino;
  11. while(i < N) {
  12. archivos[i] = fopen(nombres[i],"r");
  13. i++;
  14. }
  15. destino = fopen("destino","w");
  16. while(finalizados != (N-1)) {
  17. while(i < N) {
  18. if(archivos[i] != NULL) {
  19. fgets(buffer,1000,archivos[i]);
  20. fprintf(destino,"%s\n",buffer);
  21. memset(buffer,0,1000);
  22. if(feof(archivos[i])) {
  23. fclose(archivos[i]);
  24. archivos[i] = NULL;
  25. finalizados++;
  26. }
  27. }
  28. i++;
  29. }
  30. }
  31. fclose(destino);
  32. }





 
En línea

jpozuelo

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Unir varios ficheros en uno, escribiendo todas las primeras al principio y suc..
« Respuesta #4 en: 16 Mayo 2016, 08:03 am »

Muchísimas gracias por tu respuesta.

Finalmente no lo voy a hacer literalmente como me comentas dado que no sirve para mis archivos (algo lógico pues no he especificado como son), pero me has dado la idea central para poder mejorar el programa.
Aún lo he probado, cuando lo pruebe comentaré para tratar los resulados.

Muchas gracias por la ayuda
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
unir varios avis
Multimedia
2serious 5 2,602 Último mensaje 7 Enero 2007, 15:16 pm
por 2serious
Como se puede unir varios avis en uno?
Multimedia
Shutdown -r 5 5,231 Último mensaje 8 Febrero 2010, 14:26 pm
por Randomize
[Shell Script] ¿Cómo unir lineas de distintos ficheros?
Scripting
‭lipman 3 7,676 Último mensaje 6 Mayo 2011, 23:40 pm
por d00ze13
unir varios listbox en Visual Basic 6.0
Programación Visual Basic
kenrigls 3 2,611 Último mensaje 8 Abril 2014, 21:57 pm
por 79137913
Unir varios Proxies
Redes
Zedmix 2 2,267 Último mensaje 9 Febrero 2015, 20:35 pm
por el-brujo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines