1

I'm writing a 'C' code that stores the TCP payload of captured packets in a file (payload of each packet is separated by multiple "\n" characters). Using C, is it possible to search for a particular string in the file after all the packets are captured?

P.S : The file can be very large, depending upon the number of captured packets.

Nnn
  • 191
  • 3
  • 9

1 Answers1

2

Read the file line by line and search using strstr.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
FILE * fp;
char * line = NULL;
size_t len = 0;
ssize_t read;
char * pos;
int found = -1;

fp = fopen("filename", "r");
if (fp == NULL)
    exit(EXIT_FAILURE);

while ((read = getline(&line, &len, fp)) != -1) 
   {
      pos = strstr(line,"search_string");
      if(pos != NULL)
      {
          found = 1;
          break;
      }
   }

if(found==1)
    printf("Found");
else
    printf("Not Found");

fclose(fp);

if (line)
    free(line);

exit(EXIT_SUCCESS);
}
Fabio_MO
  • 713
  • 1
  • 13
  • 26
Srini2k6
  • 380
  • 1
  • 5
  • 19