Invertir un fichero

Responder
Avatar de Usuario
Xtreme
Mensajes: 1023
Registrado: 13 Dic 2009 23:47
Contactar:

Invertir un fichero

Mensaje por Xtreme »

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
[equipo]Sobremesa jugón|Intel Core 2 Q8200 @2.8|Asus Maximus Formula|2x2gb Samsung Drr2 667@800|AMD 6870 xfx OC|||Thermaltake isgc 300||Nox coolbay W|Creative soundblaster|Windows 7 Ultimate|||Logitech g400||[/equipo]
faariwasi
Mensajes: 1
Registrado: 25 Dic 2014 20:03

Re: Invertir un fichero

Mensaje por faariwasi »

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í.
Responder