title: Function to remove spaces from string/char array in C
body: <p>The question asked <a href="https://stackoverflow.com/questions/1726302/removing-spaces-from-a-string-in-c">here</a> is very similar to what I am having a problem with. The difference is that I must pass an argument to a function that removes the spaces and returns the resulting string/char array. I got the code working to remove the spaces but for some reason I am left with trailing characters left over from the original array. I even tried strncpy but I was having lots of errors.</p>
  
  <p>Here is what I have so far:</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  #include &lt;string.h&gt;
  #define STRINGMAX 1000                                                      /*Maximium input size is 1000 characters*/
  
  char* deblank(char* input)                                                  /* deblank accepts a char[] argument and returns a char[] */
  {
      char *output=input;
      for (int i = 0, j = 0; i&lt;strlen(input); i++,j++)                        /* Evaluate each character in the input */
      {
          if (input[i]!=' ')                                                  /* If the character is not a space */
              output[j]=input[i];                                             /* Copy that character to the output char[] */
          else
              j--;                                                            /* If it is a space then do not increment the output index (j), the next non-space will be entered at the current index */
      }
      return output;                                                          /* Return output char[]. Should have no spaces*/
  }
  int main(void) {
      char input[STRINGMAX];
      char terminate[] = "END\n";                                             /* Sentinal value to exit program */
  
      printf("STRING DE-BLANKER\n");
      printf("Please enter a string up to 1000 characters.\n&gt; ");
      fgets(input, STRINGMAX, stdin);                                         /* Read up to 1000 characters from stdin */
  
      while (strcmp(input, terminate) != 0)                                   /* Check for que to exit! */
      {
          input[strlen(input) - 1] = '\0';
          printf("You typed: \"%s\"\n",input);                                /* Prints the original input */
          printf("Your new string is: %s\n", deblank(input));                 /* Prints the output from deblank(input) should have no spaces... DE-BLANKED!!! */
  
          printf("Please enter a string up to 1000 characters.\n&gt; ");
          fgets(input, STRINGMAX, stdin);                                     /* Read up to another 1000 characters from stdin... will continue until 'END' is entered*/
      }
  }
  </code></pre>