title: Remove trailing NULL terminator
body: <p>I have a large char array that is filled with 0's. I read an incoming file from a socket and place it's contents in the buffer. I can't write the buffer with all of the '\0's in it, so I allocate a new buffer with the correct size and to write.
  I used this approach to do that:</p>
  
  <pre><code>int i = 0;
  while(buf[i] != '\0'){
      i++;
  }
  char new[i];
  while(i){
      new[i] = buf[i];
      i--;
  }
  new[0] = buf[0];
  </code></pre>
  
  <p>While this approach works, it doesn't seem like the smartest or most elegant way. What is the best way to remove all of the trailing NULL chars from a char array?</p>