#include<stdio.h>
void reverse(char* x, char* y)//逆置函数,会逆置给定空间里的字符
{
while (x < y)
{
*x = *x ^ *y;
*y = *x ^ *y;
*x = *x ^ *y;
x++;
y--;
}
}
int main()
{
char arr[] = "student a am i";
int sz = sizeof(arr) / sizeof(arr[0]);
char* p = arr;
char* q = p;
reverse(arr, arr + sz - 2);//先全部逆置
//用‘ ’判断并且局部逆置
while (*p != '\0' && *q != '\0')
{
if (*q == ' ')
{
reverse(p, q - 1);
q++;
p = q;
}
q++;
}
reverse(p, q - 1);//逆置最后一个单词
printf("%s\n", arr);//打印数组
system("pause");
return 0;
}