(一)比如输入“abcd”,输出“dcba”
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
//#include
char* reverse(char *s)
{
char *p, *r;
p = r = s;
while ('\0' != *p)
{
p++;
}
p--;
while (r < p)
{
*r = *r ^ *p;//这段代码不明白,各位路过的大牛看到后留言解个惑。
*p = *r ^ *p;
*r = *r ^ *p;
r++;
p--;
}
return s;
}
int main()
{
char *x;
char *y;
char a[] = "1234";
x = a;
reverse(x);
printf("x:%s", x);
getchar();
return 0;
system("pause");
}
(二)单词逆序,比如输入“you love I”,输出“I love you”
#include
#include
#include
// 对指针p和q之间的所有字符逆序
void ReverseWord(char* p, char* q)
{
while (p < q)
{
char t = *p;
*p++ = *q;
*q-- = t;
}
}
// 将句子按单词逆序
char* ReverseSentence(char* s)
{
// 这两个指针用来确定一个单词的首尾边界
char* p = s; // 指向单词的首字符
char* q = s; // 指向空格或者 '\0'
while (*q != '\0')
{
if (*q == ' ')
{
ReverseWord(p, q - 1);
q++; // 指向下一个单词首字符
p = q;
}
else
q++;
}
ReverseWord(p, q - 1); // 对最后一个单词逆序
ReverseWord(s, q - 1); // 对整个句子逆序
return s;
}
int main()
{
char *x;
char *y;
char a[] = "you love i";
x = a;
ReverseSentence(x);
printf("x:%s", x);
getchar();
return 0;
system("pause");
}
强烈推荐这篇文章,各种情况的字符串逆序,博主介绍的非常详细。
https://www.cnblogs.com/graphics/archive/2011/03/09/1977717.html