title: Debug Assertion Error in C
body: <p>got some code here that won't compile correctly because it is saying that my pointer is already null when i am testing for a not null expression in my main function. here is the code :</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  #include &lt;stdlib.h&gt;
  #include &lt;string.h&gt;
  #define MAXCODE        53
  #define MAXMESSAGE    256
  
  void getCode(char *codeIn, char *filename) {
  
  FILE *codeFile;
  
  /* Open the file with the code */
  codeFile = fopen(filename, "r");
  
  if (codeFile == NULL) {
      printf("Error opening the code file - program terminated\n");
      exit(1);
  }
  
  /* Read the first (and assumed only) line from the file */
  fgets(codeIn, MAXCODE, codeFile);
  
  /* Terminate the string with /0 */
  codeIn[MAXCODE] = '\0';
  
  /* Close the file */
  fclose(codeFile);
  
  return;
  }
  
  int getMessage(int *message, char *filename) {
  
  FILE *messageFile;
  int counter = 0;
  
  /* Open the file with the message */
  messageFile = fopen(filename, "r");
  
  if (messageFile == NULL) {
      printf("Error opening the message file - program terminated\n");
      exit(1);
  }
  
  /* Read one number at a time from the file and store it */
  while (!feof (messageFile))
  {
      fscanf (messageFile, "%d", (message+counter));
      counter++;
  }
  
  /* Close the file */
  fclose(messageFile);
  
  return (counter);
  }
  
  void sortMessage(int *message, int size) {
  
  int i, j, temp;
  for (i=0; i&lt;size-1; i++) {
      for (j=i; j&lt;size; j++) {
          if (message[i]&gt;message[j]) {
              temp = message[i];
              message[i] = message[j];
              message[j] = temp;
          }
      }
  }
  
  return;
  }
  
  void decodeMessage(char *codeIn, int *message, int size) {
  
  FILE *outputFile;
  int i = 0;
  
  /* Open the output file */
  outputFile = fopen("csis.txt", "w");
  
  if (outputFile == NULL) {
      printf("Error opening the output file - program terminated\n");
      exit(1);
  }
  
  for (i=0; i&lt; size; i++) {
      fprintf(outputFile, "%c", codeIn[message[i]%100]);
      printf("%c", codeIn[message[i]%100]);
  }
  printf("\n");
  
  /* Close the file */
  fclose(outputFile);
  
  return;
  }
  int main(int argc, char *argv[])
   {
    char code[MAXCODE];
    int msg[MAXMESSAGE];
    int msgSize;
  
  if (argc != 3) {
      printf("This program takes two arguments: the name of the file with the code, and the name of the file with the encoded message\n");
  }
  
  getCode(code, argv[1]);
  msgSize = getMessage(msg, argv[2]);
  sortMessage(msg, msgSize);
  decodeMessage(code, msg, msgSize);
  
  
  return;
  }
  </code></pre>
  
  <p>So basically my code is using two files called codefile.txt and msgfile.txt to decode the secret message and write the decoded sequence to a new text file called csis.</p>