So my program takes a file as input and parses out spaces. Tokens are saved into an array. I have a function to print out the contents of the array to test if the parser works. The code compiles with gcc -o filename filename.c . But when I run the program and give it a filepath, I get a pop up window indicating filename.exe has stopped working : A problem caused the program to stop working correctly. Windows will close the program and notify you if a solution is available.
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
char file_name[100];
char *token_array[256];
int main()
{
   char ch;
   FILE *fp;
   int n=0;
   char *str;
   printf("Enter filepath\n");
   gets(file_name);
   fp = fopen(file_name,"r"); 
   if( fp == NULL )
   {
      perror("Error opening the file.\n");
      exit(EXIT_FAILURE);
   }
   int i = 0;         
   char *p; 
   while( ( ch = fgetc(fp) ) != EOF )
   {
    char *fgets(char *str, int n, FILE *stream);
    p = strtok(str, " ");
    i=0;
    while(p!=NULL)
    {
        strcpy(token_array[i], p);
    }
    i++;
   }
   for(n=0;n<256;n++)
   {
      printf("%s", &token_array[n]);
   }
   return 0;
}
 
     
     
    