字符串student a am i

字符串翻转

过程

局部反转

整体翻转

//  student a am i
//  第一步--局部翻转
//  tmeduts a ma i
//  第二步--整体翻转

代码


#include<stdio.h>
#include<assert.h>

void Reverse(char* start, char* end)
{
//翻转字符串
	while (start < end)
	{
		*start ^= *end;
		*end ^= *start;
		*start ^= *end;
		start++;
		end--;
	}
}
char* ResverStr(char *str)
{
     assert(str);
	char* end = str;
	char* start= end ;
	while (*end)
	{
		if (*end == ' ')   //以空格为节点,遇到空格将前一个字符串翻转
		{
			Reverse(start, end-1);
			end = end + 1;
			start = end;
		}
		end++;	
	}
	Reverse(start, end - 1); //由于遇到"\0" x循环结束,最后一个字符串要翻转
	Reverse(str, end - 1);//整体翻转
	return str;
}
int main()
{
	char str[] = "student a am i";
	//            tneduts a ma i
	//ResverStr(str);
	printf("%s\n",ResverStr(str));


	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_42139044/article/details/83961075