【发布时间】:2018-06-24 22:34:25
【问题描述】:
我正在尝试使用指针反转字符串,但它似乎不起作用,有什么问题?输出是olllo,但应该是olleh。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void reverse(char *cadena){
size_t len = strlen(cadena);
char *end= cadena;
char *aux = cadena;
while(*++end){}
--end; //end points to a
for(;len;--len){
*aux++ = *end--;
}
}
int main()
{
char buffer[] = "hello";
reverse(buffer);
printf("%s",buffer);
return 0;
}
【问题讨论】:
-
你的for循环坏了;你应该交换每个字符对并且只运行到字符串的一半。
-
而且你真的不需要两个循环来完成这个任务
-
@SHG 是正确的,你可以直接使用长度来计算 end。 char *end= cadena + (len - 1);