1. 程式人生 > >有一個字元陣列的內容為:"student a am i", 請你將陣列的內容改為"i am a student".

有一個字元陣列的內容為:"student a am i", 請你將陣列的內容改為"i am a student".

//有一個字元陣列的內容為:"student a am i",
//	請你將陣列的內容改為"i am a student".
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void reverse_string(char str[], int len){
	int left = 0;
	char temp = ' ';
	int right = len - 1;
	while (left<right){
		temp = str[right];
		str[right] = str[left];
		str[left] = temp;
		left++;
		right--;
	}
}
void reverse(char* left,char* right){
	char temp = ' ';
	while (left<right){
		temp = *right;
		*right = *left;
		*left = temp;
		left++;
		right--;
	}
}
void reverse_word(char str[]){
	char* left = str;
	char* right = str;
	while (*right){
		//反轉每一個單詞
		left = right;
		while ((*right != ' ') && (*right != '\0')){
			right++;
		}
		right--;
		reverse(left, right);
		right++;
		if (*right == ' '){
			right++;
		}
	}
}
int main()
{
	char str[] = "student a am i";
	int len = (sizeof(str)-1) / sizeof(str[0]);
	reverse_string(str, len);
	reverse_word(str);
	printf("%s", str);
	system("pause");
	return 0;
}