有一个字符数组的内容为:“student a am i”,
请你将数组的内容改为"i am a student".不能使用库函数。
只能开辟有限个空间(空间个数和字符串的长度无关)。
提示:第一步: i ma a tneduts 第二步: i am a student
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void reverse(char* start, char* end)
{
while (start < end)
{
char tmp = *start;
*start = *end;
*end = tmp;
start++;
end--;
}
}
void str_reverse(char* str)
{
int len = strlen(str);
reverse(str, str + len - 1); //全部逆置
while (*str != '\0')
{
char* pos = str;
while ((*str != ' ') && (*str != '\0'))
{
str++;
}
reverse(pos, str - 1); //每个单词的逆置
if (*str != '\0')
{
str++;
}
}
}
int main()
{
char str[] = "student a am i";
printf("原字符串为:%s\n", str);
str_reverse(str);
printf("翻转后的字符串为:%s\n", str);
system("pause");
return 0;
}