问题:有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student".
要求:不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
#include<stdio.h>
#include<assert.h>
int my_strlen(const char* str)
{
assert(str);
const char* eos = str;
while(*eos++)
{
;
}
return (eos-str-1);
}
void reverse_str(char* left,char* right)
{
assert(left);
assert(right);
while(left<right)
{
int t = *left;
*left = *right;
*right = t;
left++;
right--;
}
}
void reverse(char* arr)
{
while(*arr)
{
char *left = arr;
char *right = NULL;
while((*arr!='\0')&&(*arr!=' ') )
{
arr++;
}
right = arr-1;
reverse_str(left, right);
if(*arr!='\0')
arr++;
}
}
int main()
{
char arr[] = "student a am i";
int ret = my_strlen(arr);
reverse_str(arr,arr+ret-1);//先反转正个字符串
reverse(arr);//再对子字符串进行反转
printf("%s\n",arr);
return 0;
}*/