title: Getc() reading \n improperly
body: <p>I am creating a program that prints each line of a file one by one in reverse word order. i.e. "The big black moose" prints as "moose black big The".</p>
  
  <p>However, in the code below, it does not print the last word of lines that do not have a delimiter before the line break. A delimiter in this case is defined as any whitespace character such as space or tab.</p>
  
  <pre><code>int main(int argc, char const *argv[]) {
      if (argc != 2) return 0;
  
      int i = 0, c;
      int isD = 0, wasD = 1;
      int count = 0;
  
      FILE *file = fopen(argv[1], "r");
  
      while ((c = getc(file)) != EOF) {
          isD = c == ' ' || c == '\t' || c == '\n';
  
          if (!isD) {
              chars[i++] = c;
              count++;
          }
  
          if (isD &amp;&amp; !wasD) {
              shiftInsert(i++, count);
              count = 0;
          }
  
          wasD = isD;
      }
      fclose(file);
  
      return 0;
  }
  
  int shiftInsert(int length, int shift) {
      int word[shift+1], i;
  
      printf("\n----------\nL:%d,S:%d\n", length, shift);
  
      for (i = 0; i &lt; shift; i++)
          word[i] = chars[length-shift+i];
      word[shift] = ' ';
  
      for (i = 0; i &lt; shift; i++)
          printf("%c", word[i]);
  
      for (i = length; i &gt;= 0; i--)
          chars[i+shift+1] = chars[i];
  
      for (i = 0; i &lt;= shift; i++)
          chars[i] = word[i];
  
      printf("|");
  }
  </code></pre>