有一个字符数组的内容为:"I love Cyuyan!"
请你将数组的内容改为"Cyuyan! love I"
不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
三步翻转法!
代码如下:
#include <stdio.h>
#include <string.h>
void reserve(char* left, char* right)
{
while (left < right)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
void fun(char* start)
{
char* end = start;
while (*start)
{
if (*end == ' '||*end=='\0')
{
reserve(start, end - 1);//将一个单词倒序 因为之前整个字符串倒序过 所以现在该单词为正序
if (*end == '\0')//当end指向'\0'时 star=end 否则跳不出循环
start = end;
else
start = end + 1;
}
end++;
}
}
void print(char* str)
{
printf("%s", str);
}
int main()
{
char str[100] = "I love Cyuyan!";
int len = strlen(str);//求字符串长度
reserve(str,str+len-1);//倒序字符串
fun(str);
print(str);
return 0;
}