Я совершенно новый в C, и я пытаюсь сделать небольшое приложение, которое ищет строку в файле.Моя проблема в том, что мне нужно открыть большой файл (более 1 ГБ) с одной строкой внутри, и fgets возвращает мне весь файл (я делаю тест с файлом размером 10 КБ).
На самом деле это мойкод:
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
char *search = argv[argc-1];
int retro = strlen(search);
int pun = 0;
int sortida;
int limit = 10;
char ara[20];
FILE *fp;
if ((fp = fopen ("SEARCHFILE", "r")) == NULL){
sortida = -1;
exit (1);
}
while(!feof(fp)){
if (fgets(ara, 20, fp) == NULL){
break;
}
//this must be a 20 bytes line, but it gets the entyre 10Kb file
printf("%s",ara);
}
sortida = 1;
if(fclose(fp) != 0){
sortida = -2;
exit (1);
}
return 0;
}
Что я могу сделать, чтобы найти строку в файле?
Я пробовал с GREP, но это не помогает, потому что он возвращает позицию: ENTIRE_STRING.
Я открыт для идей.