1. 程式人生 > >字串student a am i

字串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; }