c - 如何在不使用临时字符串和 C lib 的情况下反转字符串?

标签 c

我试图在不使用临时字符串的情况下反转字符串,但是当我执行程序时,我有 olllo结果不是olleH .

这是我的代码:

    #include <stdio.h> 
    #include <string.h> 

    int main(){
        char *str = strdup("Hello");
        int reverse(char * str){
            int i=0;
            int j = strlen(str)-1;
            while(i<=j){
                (str[i]) = (str[j]);
                i++;
                j--;
            }
        return 0;
        } 
        reverse(str);
        printf("string = %s\n", str);
        return 0; 
    }

最佳答案

你不能这样做,因为你的 char *str 是一种常量变量:你只是在其中放入了一些东西,而不使用任何动态内存分配函数,如 malloc()。除非复制该指针,否则无法修改该指针的内容。

像这样使用strdup(char *):

char * str = strdup("Hello");

然后您就可以修改字符串内容。

关于c - 如何在不使用临时字符串和 C lib 的情况下反转字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26700713/

相关文章:

c - 在 strcpy 函数中使用指针作为参数。尝试理解书本上的代码

c - 之前使用memset还需要设置ptr为NULL吗?

c 扫描二维数组

c - 如何在共享内存中保存结构 C - Windows

c - 编译器如何翻译 while(foo)?

c - 根据 settimeofday 调整基于 CLOCK_REALTIME 的计时器

c - pangram 函数在 c 中不起作用

c - CLOCK_REALTIME CLOCK_MONOTONIC 中哪个时钟最适合计算开始时间结束时间

c - 按下两个按钮时试图让电机停止

使用 libexpect 通过 bash 自动连接 sshfs