Possible Duplicate:
How do you reverse a string in place in C or C++?
Why is this C code causing a segmentation fault?
Modifying value of char pointer in c produces segfault
Running a very simple code example
#include <stdlib.h>
#include <iostream>
char* last_char(char* s){
  char* last = s;
  while (*last) ++last;
  return last;
}
char* in_place_reverse(char* s) {
  char* left = s;
  char* right = last_char(s);
  char temp;
  while( left < right ) {
    temp = *left;
    *left = *right;
    *right = temp;
    left++;
    right--;
  }
  return s;
}
int main(){
  char * s = "letters\n";
  std::cout << in_place_reverse(s);
}
All the time I get
 Segmentation fault
But from my point of view I'm not doing anything illegal within the code. Please help me to determine what's wrong.
P.S. I compile with
g++ example.c
 
     
     
    