Buscar en Mundobip

Artículos | Foro

Invertir un fichero

Invertir un fichero

Notapor Xtreme » 26 Dic 2011 12:01

Hola, para variar, os vengo con una duda de c (con lo facilita que era la memoria en java :lol: )

La cosa es, tengo que hacer un programa que invierta el orden de las lineas de los ficheros que se le pasa de argumento

Por ejemplo:

Código: Seleccionar todo
fich1=
a
b
c
fich2=
1
2
3


El programa invocado como ./bocabajo fich1 fich2 debe devolver

3
2
1
c
b
a

El caso es que tengo algun problema de memoria, pero no se donde, os dejo lo que tengo hecho, un saludo y gracias de antemano :D

Código: Seleccionar todo
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define iniciales 2

int main(int argc, char *argv[]){

   char leido[2048]; //linea leida
   int nLeidas; //numero de lineas leidas
   int i,j,k; //variables de rercorrido
   char ** leidas; //array con las lineas leidas
   FILE *entrada;
   int tam = 0; //tamaño array de lineas

// Ficheros como argumento

   for (i=argc-1; i>0; i--){
      entrada = fopen(argv[i],"r");

      if(entrada==NULL){
         printf("No existe el fichero");   
      }
      else{
         //Inicicializamos el array
         leidas = (char **) malloc (sizeof (char *)* iniciales);
         tam = iniciales;
         //Comenzamos a almacenar lineas
         
         while(!feof(entrada)){
            //Comprobamos si vamos a superar el tamaño del array
            if (nLeidas>=tam){
               leidas = (char **) realloc (leidas, sizeof(char*)*tam*2);
               tam *=2;
            }
            fgets(leido, 2048, entrada);
            leidas[nLeidas] = strdup(leido);
            nLeidas++;
         }
         //Devolvemos las lineas en el orden inverso
         for (j= 0; j<nLeidas; j++){
            printf("%s", leidas[nLeidas-i-1]);         
         }
         //Limpiamos la memoria
         for (k=0; k<nLeidas; k++){
            free(leidas[k]);
         }
         free(leidas);
         tam=0;
      }   
   }



   

}


Y aquí para que lo leais mas comodo

http://pastebin.com/P02MNgzZ



Publicidad
  Sobremesa jugón
  • Procesador
    Intel Core 2 Q8200 @2.8
  • Placa base
    Asus Maximus Formula
  • RAM
    2x2gb Samsung Drr2 667@800
  • Tarjeta gráfica
    AMD 6870 xfx OC
  • Disco Duro
  • Unidad Óptica
  • Refrigeración
    Thermaltake isgc 300
  • Fuente alimentación
  • Caja
    Nox coolbay W
  • Sonido
    Creative soundblaster
  • Sistema operativo
    Windows 7 Ultimate
  • Monitor
  • Teclado
  • Ratón
    Logitech g400
  • Otros
  • Otros
Ocultar
Avatar de Usuario
Xtreme
 
Mensajes: 1023
Registrado: 13 Dic 2009 23:47

Re: Invertir un fichero

Notapor faariwasi » 25 Dic 2014 20:07

Si que los cables están desordenados, pero el bullicio lo tiene arriba de todo, por encima de todos los componentes, con lo que no molesta para nada. Es un gran método ese de tener la fuente de alimentacion por encima (o debajo) de lo que es la caja, este verano igual hago algún chanchullo para que me quede así.
faariwasi
 
Mensajes: 1
Registrado: 25 Dic 2014 20:03


Volver a C y C++

¿Quién está conectado?

Usuarios registrados: Bing [Bot], Google [Bot], Majestic-12 [Bot]