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;
}