要求:
不能使用库函数。
只能开辟有限个空间(空间个数和字符串的长度无关)。
student a am i
i ma a tneduts
i am a student
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#include<assert.h>
void change_order(char *left, char *right)
{
assert(left != NULL);
assert(right != NULL);
while (left < right)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
char *reverse_word(char *p)
{
int len = strlen(p);
char *start = p;
char *end = NULL;
char *ret = p;
change_order(p, p + len - 1);
while (*p)
{
start = p;
while ((*p != '\0') && (*p != ' '))
{
p++;
}
end = p - 1;
change_order(start,end);
if (*p == ' ')
{
p++;
}
}
return ret;
}
int main()
{
char arr[] = "student a am I";
printf("交换前为:%s\n",arr);
printf("交换后为:%s\n", reverse_word(arr));
system("pause");
return 0;
}