#include /*
函数功能:
将字符串 str 中的单词,逆序输出到 buffer 中
*/
char *reverseWords(char str[],char buffer[])
{
int wordStart=-1,wordEnd=-2;
int length=strlen(str);
int i=0,j=0,k=length-1;
for(i=0;i<=length;i++)
{// 遍历整个字符串
if(('a'<=str[i] && str[i]<='z') ||('A'<=str[i] && str[i]<='Z'))
{// 当前字符是单词字符
if(wordStart < 0)
// 记录单词开始位置
wordStart = wordEnd = i;
else
// 记录单词结束位置
wordEnd ++;
}
else
{// 当前字符是非单词字符
for(j=wordEnd;j>=wordStart;j--)
{// 逆序写单词到 buffer
buffer[k--] = str[j];
}
// 写入非单词符号
buffer[k--] = str[i];
// 标记当前没有单词
wordStart = -1,wordEnd = -2;
}
}
buffer[length]='\0';
return buffer;
}
int main(int argc, char *argv[])
{
char str[100];
char buffer[100] = {0};
while(gets(str) != NULL)
{
printf("%s\n",reverseWords(str,buffer));
}
return 0;
}
/*
测试数据
I am a student
Hello world, hello China !
*/