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

时间:2014-11-02 15:03:21

标签: 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; 
    }

1 个答案:

答案 0 :(得分:1)

你不能做这样的事情,因为你的char *str是一种常量变量:你只是在不使用像malloc()这样的动态内存分配函数的情况下放入其中。除非您复制它,否则无法修改此指针的内容。

像这样使用strdup(char *)

char * str = strdup("Hello");

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