思路:定义一个字符指针数组,用于保存每个单词的起始字符地址,接下来将非字母字符全部替换成为字符串结尾标志,则单词字符字母遇到结尾就结束了,相当于把一个字符串以非字母字符进行切割成为了多个字
符串,最终对字符指针数组进行逆序打印每个单词即可
#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;
}



京公网安备 11010502036488号