void reverse_string(char* start, char* end)
{
while (start < end)
{
char tmp = *start;
*start = *end;
*end = tmp;
start++;
end--;
}
}
int mystrlen(char* str)//计数,测量字符串长度
{
int count = 0;
while (*str)//没有到/0则一直进行
{
count++;
++str;
}
return count;
}
void reverse(char* str)
{
//整体逆转
char* start = str;//逆转起点
char* end = str + mystrlen(str) - 1;//逆转终点
char* cur = str;
reverse_string(start, end);
//局部逆转
while (*cur)
{
char* sub_start = cur;//子串起点
while ((*cur != ' ') && (*cur != '\0'))//子串尾点
{
++cur;
}
//逆转子串
reverse_string(sub_start, cur - 1);
while (*cur == ' ')
{
++cur;
}
}
}
int main()
{
char str[100];
gets(str);
reverse(str);
printf("%s", str);
system("pause");
return 0;
}