Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/03/2006, 06:34
abelrguez
 
Fecha de Ingreso: marzo-2006
Mensajes: 5
Antigüedad: 18 años, 10 meses
Puntos: 0
Intento implementar la función grep de unix

Por favor, tengo que completar una práctica muy importante, y he hecho todas las funciones que me pedían menos la "grep" de UNIX (grep cadena archivo: Muestra todas las líneas de archivo que contienen cadena).

Lo que pretendo es que esta función grep pueda ser imitada por ejemplo en ms-dos. El código que tengo de momento lo pongo acontinuación, pero me da error de segmentación ¿Alguien me podría ayudar?

Muchas gracias por adelantado.


- Abel -


#include <stdio.h>
#include <string.h>

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

FILE *punteroarchivo;
char *linea[100]; /*Linea a evaluar*/
char caracter;
int lineas;
int indice;

if(argc<2){
fprintf(stderr,"Formato: grep cadena archivo\n");
return 1;
}
if((punteroarchivo=fopen(argv[2],"r"))==NULL){
fprintf(stderr, "No se pudo abrir fichero %s\n",argv[2]);
}
else {

while((caracter=getc(punteroarchivo))!=EOF){ /*Contamos el numero de lineas del fichero*/
if(caracter=='\n')
lineas++;
}

fclose(punteroarchivo);

punteroarchivo=fopen(argv[2],"r");

for(indice=0;indice<lineas;indice++){

fgets(linea[indice],100,punteroarchivo);

while(strcmp(argv[1],linea[indice])) { /*...evaluacion de la cadena*/

fputs(linea[indice],punteroarchivo);

}
}
fclose(punteroarchivo);

}
return 0;
}