相关疑难解决方法(0)

为什么这个字符串反转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
    }
}
Run Code Online (Sandbox Code Playgroud)

它是第2行和第3行导致分段错误.我知道可能有更好的方法来做到这一点,但我有兴趣找出我的代码中特别导致分段错误的内容.

更新:我已根据要求包含了调用函数.

c string segmentation-fault

29
推荐指数
2
解决办法
6610
查看次数

char指针中的分段错误

运行以下代码时出现分段错误.这个错误的原因是什么?请帮忙

int main()
{
    char *str2 = "Hello";
    str2[3] = 'J';
    printf("%s\n",str2);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c string-literals

1
推荐指数
1
解决办法
99
查看次数

将字符串的第一个字节递增1

我有一个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)

基本向上串的第一字节偏移的字节从去helloielloHelloIello

c string pointers

0
推荐指数
1
解决办法
270
查看次数