我正在尝试使用指针反转字符串。当我尝试打印反转的字符串而不是获取 DCBA 时,我只能以 BA 身份退出?有人可以帮我解决这个问题吗?
#include<stdio.h>
void reverse(char *);
void main()
{
char str[5] = "ABCD";
reverse(str);
}
void reverse(char *str)
{
char *rev_str = str;
char temp;
while(*str)
str++;
--str;
while(rev_str < str)
{
temp = *rev_str;
*rev_str = *str;
*str = temp;
rev_str++;
str--;
}
printf("reversed string is %s",str);
}
最佳答案
你失去了指向字符串开头的指针,所以当你打印它时,你不是从第一个字符开始的,因为 str
不再指向第一个字符。只需放入一个占位符变量以保留指向字符串开头的指针。
void reverse(char *str)
{
char *begin = str; /* Keeps a pointer to the beginning of str */
char *rev_str = str;
char temp;
while(*str)
str++;
--str;
while(rev_str < str)
{
temp = *rev_str;
*rev_str = *str;
*str = temp;
rev_str++;
str--;
}
printf("reversed string is %s\n", begin);
}
关于c - 使用指针反转字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10302524/