How do you reverse a string in C or C++ without requiring a separate buffer to hold the reversed string?
Non-evil C, assuming the common case where the string is a null-terminated char array:
#include 
#include 
/* PRE: str must be either NULL or a pointer to a 
 * (possibly empty) null-terminated string. */
void strrev(char *str) {
  char temp, *end_ptr;
  /* If str is NULL or empty, do nothing */
  if( str == NULL || !(*str) )
    return;
  end_ptr = str + strlen(str) - 1;
  /* Swap the chars */
  while( end_ptr > str ) {
    temp = *str;
    *str = *end_ptr;
    *end_ptr = temp;
    str++;
    end_ptr--;
  }
}