我试图在不使用临时字符串的情况下反转字符串,但是当我执行程序时,我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;
}
答案 0 :(得分:1)
你不能做这样的事情,因为你的char *str
是一种常量变量:你只是在不使用像malloc()
这样的动态内存分配函数的情况下放入其中。除非您复制它,否则无法修改此指针的内容。
像这样使用strdup(char *)
:
char * str = strdup("Hello");
然后您就可以修改字符串内容。