fgets in c doesn't return a portion of an string

Posted by Marc on Stack Overflow See other posts from Stack Overflow or by Marc
Published on 2010-06-14T19:25:01Z Indexed on 2010/06/15 2:12 UTC
Read the original article Hit count: 336

Filed under:
|
|
|

Hi!

I'm totally new in C, and I'm trying to do a little application that searches a string into a file, my problem is that I need to open a big file (more than 1GB) with just one line inside and fgets return me the entire file (I'm doing test with a 10KB file).

actually this is my code:

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

What can I do to find an string into a file?

I'v tried with GREP but it don't helps, because it returns the position:ENTIRE_STRING.

I'm open to ideas.

Thanks in advance!

© Stack Overflow or respective owner

Related posts about c

    Related posts about string