#include
#include
int main(void)
{
char string[500001];
char *p;
//将字符串的首地址赋给p
p = gets(string);
//将p移动到最后一位
p = p + strlen(string) - 1;
//去除结尾的空格
while(*p == ' ')
{
*p = '\0';
p--;
}
//core
while (p > string)
{
//判断前一个字符是否为空格
if(*(p - 1) == ' ')
{
//前一个字符是空格!!!
printf("%s", p);
//删除前方空格
while(*(p - 1) == ' ')
{
*(p - 1) = '\0';
p--;
}
//控制空格输出
/*
* 为什么判断是不是首地址?
* 输出原字符串的第一个单词时,不管前面有几个空格都会被消去,使指针变量p指向字符串首地址
*/
if(p != string)
printf(" ");
}
p--;
}
//用于字符串开头没有空格的时候输出源字符串第一个单词
printf("%s", p);
return 0;
}