可能重複:
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 segfaultC++段錯誤: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
但是從我的觀點來看,我沒有在代碼中做任何非法的事情。 請幫我判斷出了什麼問題。
P.S.我編譯
g++ example.c
您應該運行在調試該代碼。它會告訴你哪條線路導致了seg-fault,你應該能夠從那裏向後工作。 –
請注意,你的函數last_char返回分隔符'\ 0',所以如果你的代碼不會segfault,那麼'std :: cout'將不會輸出任何內容,因爲你的第一個字符串在返回後是'\ 0'。 – Nobody
[這個反轉字符串的代碼非常短](http://stackoverflow.com/a/6560310/176769)。 – karlphillip