将字符串按照单词顺序颠倒(单词顺序保持不变)_C/C++_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > C/C++ > 将字符串按照单词顺序颠倒(单词顺序保持不变)

将字符串按照单词顺序颠倒(单词顺序保持不变)

 2010/12/23 8:03:22  liukexiong  http://liukexiong.javaeye.com  我要评论(0)
  • 摘要:/**将"Iamaprogrammer"输出成"programmeraamI"*注意:相邻两个单词的空格数一次是1个,2个,3个*/#include<stdio.h>#include<string.h>/**反转字符串*/voidreverse(char*begin,char*end){while(begin<end){chartemp=*begin;*begin=*end;*end=temp;begin++;end--;}}voidreverseWords
  • 标签:字符串 单词

/*
?* 将"I am? a?? programmer"输出成"programmer?? a? am I"
?* 注意:相邻两个单词的空格数一次是1个,2个,3个
?*/
#include<stdio.h>
#include<string.h>
/*
?* 反转字符串
?*/
void reverse(char *begin,char *end)
{
?while(begin<end)
?{
??char temp=*begin;
??*begin=*end;
??*end=temp;
??begin++;
??end--;
?}
}

void reverseWords(char *str)
{
?char *s1=str;
?char *s2=str;
?char *s3=str;
?while(*s3!='\0')s3++;
?s3--;
?while(s2<=s3)
?{
??if(*s2!=' ')
??{
???if(*(s2-1)==' ')
???{
????s1=s2;
???}
???s2++;
??}
??//s2指向空格,s2-1指向非空格
??else if(*s2==' '&&*(s2-1)!=' ')
??{
???reverse(s1,s2-1);
???s2++;
??}
??//s2指向空格,s2-1指向空格
??else
??{
???s2++;
??}
?}?
}

int main()
{
?char s[]="I am? a?? programmer";
?reverse(s,s+strlen(s)-1);
?reverseWords(s);
?printf("%s\n",s);
?return 0;
}

发表评论
用户名: 匿名