I'm making a program that counts the number of words contained within a file. My code works for certain test cases with files that have less than a certain amount of words/characters...But when I test it with, let's say, a word like:
"loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong", (this is not random--this is an actual test case I'm required to check), it gives me this error:
*** stack smashing detected ***: ./wcount.out terminated
Abort (core dumped)
I know what the error means and that I have to implement some sort of malloc line of code to be able to allocate the right amount of memory, but I can't figure out where in my function to put it or how to do it:
int NumberOfWords(char* argv[1]) {
  FILE* inFile = NULL;
  char temp_word[20]; <----------------------I think this is the problem
  int num_words_in_file;
  int words_read = 0;
  inFile = fopen(argv[1], "r");
  while (!feof(inFile)) {
    fscanf(inFile, "%s", temp_word);
    words_read++;
  }
  num_words_in_file = words_read;
  printf("There are %d word(s).\n", num_words_in_file - 1);
  fclose(inFile);
  return num_words_in_file;
}
 
     
     
    