為什么這個(gè)字符串反轉(zhuǎn)C代碼會(huì)導(dǎo)致分段錯(cuò)誤?我試圖編寫代碼來反轉(zhuǎn)字符串(我只是想更好地進(jìn)行C編程和指針操作),但我不知道為什么我會(huì)得到一個(gè)分段故障:#include <string.h>void reverse(char *s);int main() {
char* s = "teststring";
reverse(s);
return 0;}void reverse(char *s) {
int i, j;
char temp;
for (i=0,j = (strlen(s)-1); i < j; i++, j--) {
temp = *(s+i); //line 1
*(s+i) = *(s+j); //line 2
*(s+j) = temp; //line 3
}}導(dǎo)致分段錯(cuò)誤的是第2行和第3行。我知道也許有更好的方法來做這件事,但我想找出具體的在我的代碼中導(dǎo)致分割錯(cuò)誤。更新*我已按要求提供了調(diào)用功能。
3 回答

陪伴而非守候
TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊
s為空。 s指向保存在只讀內(nèi)存中的const字符串。 s不為空終止。
編輯
const char*
char*
char* pStr = strdup("foobar");reverse(pStr);free(pStr);

森欄
TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個(gè)贊
int main() { char * str = "foobar"; reverse(str); printf("%s\n", str);}
char * str = strdup(foobar)
- 3 回答
- 0 關(guān)注
- 617 瀏覽
添加回答
舉報(bào)
0/150
提交
取消