字符串的兩種逆序輸出

(一)比如輸入“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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章