Можно ли переписать следующий код, который воспроизводит функциональность команды grep в linux, в меньшем количестве строк кода? Или я могу что-то сделать, чтобы сэкономить память или сделать код еще более эффективным?
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <error.h>
#include "ourhdr.h"
#define size 1024
int main(int argc, char **argv)
{
char fis[100],car[10],buff[size];
FILE *file;
if(argc!=3)
{
printf("Not all parameters were given <./a.out> <char> <numefisier>\n");
}
else
{
file=fopen(argv[2],"r");
if (file==NULL)
{
err_ret("Fisierul sursa nu exista %s", argv[2]);
exit(0);
}
strcpy(fis,argv[2]);
strcpy(car,argv[1]);
while((!feof(file)))
{
while(fgets(buff,size,file)!=NULL)
{
if(strstr(buff,car))
printf("%s \n",buff);
}
}
fclose(file);
}
return 0;
}