思路:定义一个字符指针数组,用于保存每个单词的起始字符地址,接下来将非字母字符全部替换成为字符串结尾标志,则单词字符字母遇到结尾就结束了,相当于把一个字符串以非字母字符进行切割成为了多个字

符串,最终对字符指针数组进行逆序打印每个单词即可

#include<stdio.h>
#include<string.h>
//我们使用一个指针数组,保存每个单词的起始地址,最后再逆序输出就可以了
//用'\0'把单词进行分割。
int main()
{ 
    char str[10001]={0};
    int row=0;//指针数组的下标。
    while(gets(str)>0)
    {
        char* ptr=str;
        char* world[10000]={NULL};
        while(*ptr!='\0')
        {
            //如果是字母字符,则是单词的起始地址
            if((*ptr>='A'&&*ptr<='Z')||(*ptr>='a'&&*ptr<='z'))
            {
                world[row++]=ptr;
                    while(*ptr!='\0' && 
                      ((*ptr>='A'&&*ptr<='Z')||(*ptr>='a'&&*ptr<='z')))
                    {
                        ptr++;
                    }
                //注意循环里面写if语句不写完整,没有写else的情况,
                //级有可能会发生死循环,因为如果if不满足,循环条件就不会迭代
//                 while(*ptr!='\0')
//                 {
//                     if((*ptr>='A'&&*ptr<='Z')||(*ptr>='a'&&*ptr<='z'))
//                         ptr++;
//                     else
//                         break;
//                 }
                //找到不是字母的了
                //continue; 多余。
            }
            *ptr='\0';
            ptr++;
        }
        int i=0;
        for(i=row-1;i>=0;i--)
        {
            printf("%s ",world[i]);
        }
        printf("\n");
    }
    return 0;
}