我试图在不使用临时字符串的情况下反转字符串,但是当我执行程序时,我有 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/