title: C2100 Error: Illegal Indirection
body: <p>I'm not understanding this error (C2100: illegal indirection). There are three instances I've marked-all near the bottom. I've looked online and I know it has to do with my pointers, but after 8 hours on this, I'm completely lost. There may be some other errors in here too, but I can't even tell because I can't get it to compile. Please help &amp; I'd love an explanation I can understand so I can figure out what I'm doing wrong for the future.</p>
  
  <pre><code>// INCLUDE FILES
  #include &lt;stdio.h&gt;
  #include &lt;string.h&gt;
  
  // PROGRAM CONSTANTS
  #define     MAX_MSG_LEN     81      // Maximum Message Length (Including /0 Character)
  
  // FUNCTION PROTOTYPES
  void printLength(int, int);         // Function to Validate &amp; Print Length of String
  void printString(int, char);        // Function to Print the String in Reverse
  void writeToFile(int, char);
  
  // GLOBAL VARIABLES
  char input[MAX_MSG_LEN];            // Input String
  int maxLength = MAX_MSG_LEN - 1;    // Actual String Length (Not Including /0 Character)
  char *ptr = input;                  // Character Pointer to String
  int length = 0;                     // Length of Current String
  int lcv = 0;                        // Loop Control Variable
  
  
  void main()
  {
      FILE *ifp;
      ifp = fopen("reverseString.txt", "w");
  
      printf("\n\nEnter a String Between 1 and %d Characters: ", maxLength);  // Prompts User to Enter a String Less Than 80
      gets(input);        // Receives the Inputted String from the User   
  
      length = strlen(input);     // Counts the Length of the Inputted String &amp; Assigns the Number to the "length" Variable
  
      printLength(length, maxLength);
      printString(length, *ptr);
      writeToFile(length, *ptr);
  }
  
  void printLength(int length, int maxLength)
  {
      if(length &gt; maxLength)
      {
          printf("\n\nThe Maximum Length of %d Characters was Exceeded!", maxLength);
          printf("\nProgram Terminated...\n\n");
          exit(0);
      }
  
      printf("\n\nThe Length of the Input String was: %d\n", length);     // Prints the Length of the Inputted String
  }
  
  void printString(int length, char ptr)
  {   
      for(; lcv &lt; length; lcv++)
      {
          ptr++;
      }
  
      length = lcv;
      printf("\nThe String in Reverse: ");
  
      for(ptr--; length &gt; 0; length--)
      {
          printf("%c", *ptr);     // HERE IS ONE INSTANCE OF C2100
          *ptr--;                 // HERE IS ONE INSTANCE OF C2100
      }
  
      printf("\n\n");
      return;
  }
  
  void writeToFile(int length, char ptr)
  {
      FILE *ifp;
      ifp = fopen("reverseString.txt", "w");
      fprintf(ifp, "%c", *ptr);   // HERE IS ONE INSTANCE OF C2100
      fclose(ifp);
  }
  </code></pre>