为什么这个字符串反转C代码会导致分段错误?我试图编写代码来反转字符串(我只是想更好地进行C编程和指针操作),但我不知道为什么我会得到一个分段故障:#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
}}导致分段错误的是第2行和第3行。我知道也许有更好的方法来做这件事,但我想找出具体的在我的代码中导致分割错误。更新*我已按要求提供了调用功能。
3 回答
陪伴而非守候
TA贡献1757条经验 获得超8个赞
s为空。 s指向保存在只读内存中的const字符串。 s不为空终止。
编辑
const char*
char*
char* pStr = strdup("foobar");reverse(pStr);free(pStr);
森栏
TA贡献1810条经验 获得超5个赞
int main() { char * str = "foobar"; reverse(str); printf("%s\n", str);}
char * str = strdup(foobar)
- 3 回答
- 0 关注
- 586 浏览
添加回答
举报
0/150
提交
取消