我正在尝试编写代码来反转字符串(我只是想在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
}
}
Run Code Online (Sandbox Code Playgroud)
它是第2行和第3行导致分段错误.我知道可能有更好的方法来做到这一点,但我有兴趣找出我的代码中特别导致分段错误的内容.
更新:我已根据要求包含了调用函数.
运行以下代码时出现分段错误.这个错误的原因是什么?请帮忙
int main()
{
char *str2 = "Hello";
str2[3] = 'J';
printf("%s\n",str2);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我有一个main程序:
int main() {
char *str = "hello";
printf("%s\n", str);
/* Shift first byte 1 to get "iello" */
/* Have tried
str[0] >>= 8; */
printf("%s\n", str);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
基本向上串的第一字节偏移的字节从去hello到iello或Hello以Iello