(一)比如輸入“abcd”,輸出“dcba”
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
//#include <windows.h>
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<stdio.h>
#include<string.h>
#include <stdlib.h>
// 對指針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