相关疑难解决方法(0)

修改C字符串常量?

可能重复:
为什么在写入字符串时会出现分段错误?

我想编写一个函数来反转传递给它的给定字符串.但是我不能.如果我doReverse使用字符数组提供函数(请参阅下面的代码),我的代码运行良好.

我无法弄清楚为什么这不起作用.我能够访问str[0]doReverse,但我不能用一个字符指针改变数组中的任意值.有任何想法吗?

void doReverse(char *str) {
    str[0] = 'b';
}

void main(void) {
    char *str = "abc";
    doReverse(str);
    puts(str);
}
Run Code Online (Sandbox Code Playgroud)

更新:

我知道如何通过将字符数组传递给它来编写反向函数:

void reverse1(char p[]) {
    int i, temp, y;

    for (i = 0, y = strlen(p); i < y; ++i, --y) {
        temp = p[y-1];
        p[y-1] = p[i];
        p[i] = temp;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我想编写另一个获取char指针作为参数的版本.

c string pointers

12
推荐指数
4
解决办法
7772
查看次数

标签 统计

c ×1

pointers ×1

string ×1