unknown error in c program
Hello,
I have written a program in c which searches for a string in a text file. The program works, however I get a 'segmentation fault' error after the program terminates. I believe I have tracked the problem down to the while loop inside function Read(). Any help is much appreciated.
Thanks,
--------------------------------------------------------------------------
Code:
#include <stdio.h>
#include <string.h>
/* Declare static maximum array size */
const int MAX_INPUT_SIZE = 60000;
/************************************************** *************
Task: Read text file and search for string
Implementation: Asks the user to input a string they would like
to search for, and loads each string array 'index' with a line
from the file using strstr(). The program searches for the user's
string as each line is read. The program then notifies the user
of the results.
************************************************** **************/
void Read(FILE* file)
{
char* _string;
char token[MAX_INPUT_SIZE];
int count = 0;
printf("\nString to search for: ");
fflush(stdout);
fgets(token, 10, stdin);
if (token[strlen(token) - 1] == '\n')
{
token[strlen(token) - 1] = '\0';
} // End if
while (fgets(_string, 1024, file) != NULL)
{
if (strstr(_string, token) != NULL)
count++;
_string = _string + 1;
} /* End while */
if (count != 0)
printf("\nSuccess!!!\n\nString found: %d times\n\n", count);
else
printf("\nString not found\n\n");
} /* End read */
/************************************************** *************
Task: Program entry point main()
Implementation: main asks the user to input a file for reading.
Afterwards it calls function Read() to search for a string.
************************************************** **************/
int main(int argc, char *argv[])
{
FILE * doc;
char filename[50];
printf("\nFile to open: ");
fgets(filename, 50000, stdin);
/* Ensures the file name has no return characters */
if (filename[strlen(filename) - 1] == '\n')
{
filename[strlen(filename) - 1] = '\0';
} // End if
/* Open file */
doc = fopen(filename, "r");
if (!doc)
{
printf("\nFile not found!\n");
exit(1);
} // End if
/* With file opened, call function to read file */
Read(doc);
fclose(doc);
return 0;
} /* end main */
|