有一个字符数组内容为“student a an i”,不用库函数,只能开辟有限个空间,将数组内容改为“i am a student”

#include<stdio.h>
#include<stdlib.h>

void swap(char *left, char *right) //定义具有逆置字符功能的函数
{
	
	int tmp = 0;
	while (left < right)
	{
		tmp = *left;
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}
}
int my_strlen(char *str)     //定义求取字符串长度的函数,返回count指向int型的具体值
{
	int count = 0;
	while (*str++)
	{
		count++;
	}
	return count;
}
void reverse_str(char arr[])    //定义逆置字符串的函数
{
	char *start = arr;
	char *end = arr + my_strlen(arr) - 1;  //此处的字符串长度就可以调用my_strlen
	int *curr = 0;
	if ((arr == ' ') || (arr[0] == '\0')) //如果指针为空或者首元素为字符串结束符
	{
		return;            //字符串为空,直接结束程序
	}
	swap(start, end);
	while (*arr)              //不为NULL,‘\0’的情况
	{
		curr = arr;
		while ((*arr != '\0') && (*arr != ' ')) //元素不为\0和空白符,说明一个单                                                         //词还未读取完毕
		{
			arr++;
		}
		end = arr - 1;        //如果为空白符arr-1说明退至此单词末尾字母处,如果为                                      //‘\0‘ arr-1说明退至字符串结束位置处的前一位
		swap(curr, end);
		if (*arr == ' ')        //指针指向的内容为空白符时,指针移动到下一单词的                                         //首字母处,去除了指向结束符时指针仍旧移动而越界                                         //的弊端
		{
			arr++;
		}
	}
}
int main()
{
	char arr[] = "student a am i";
	reverse_str(arr);
	printf("%s\n", arr);
	system("pause");
	return 0;
}