相关疑难解决方法(0)

为什么在写入用"char*s"而不是"char s []"初始化的字符串时会出现分段错误?

以下代码在第2行接收seg错误:

char *str = "string";
str[0] = 'z';  // could be also written as *str = 'z'
printf("%s\n", str);
Run Code Online (Sandbox Code Playgroud)

虽然这非常有效:

char str[] = "string";
str[0] = 'z';
printf("%s\n", str);
Run Code Online (Sandbox Code Playgroud)

经过MSVC和GCC测试.

c c-strings segmentation-fault

277
推荐指数
10
解决办法
7万
查看次数

为什么这个字符串反转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  *s1 = "Hello";
Run Code Online (Sandbox Code Playgroud)

为什么我不能做下面这样的事情,

*s1 = 'w'; // gives segmentation fault ...why???
Run Code Online (Sandbox Code Playgroud)

如果我做下面的事情会怎么样

string s1 = "hello";
Run Code Online (Sandbox Code Playgroud)

我可以做下面这样的事情,

*s1 = 'w'; 
Run Code Online (Sandbox Code Playgroud)

c++ string stl

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

在c中修改char指针的值会产生段错误

以下代码在我的系统上产生分段错误.我无法弄清楚为什么.任何帮助,将不胜感激.

#include<stdio.h>
int main() {
    char * a = "abc";
    *a = 'c';
    printf("%c\n", *a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c pointers char dereference

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

标签 统计

c ×3

segmentation-fault ×2

string ×2

c++ ×1

c-strings ×1

char ×1

dereference ×1

pointers ×1

stl ×1