可能重复:
如何在 C 或 C++ 中反转字符串?
为什么这个 C 代码会导致分段错误?
在c中修改char指针的值会产生段错误
运行一个非常简单的代码示例
#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);
}
我一直得到
Segmentation fault
但从我的角度来看,我没有在代码中做任何非法的事情。请帮助我确定问题所在。
PS我编译
g++ example.c