码迷,mamicode.com
首页 > 其他好文 > 详细

按单词逆序句子(含标点)

时间:2015-08-09 20:18:17      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:

主要思想:先写出单词逆序的函数,再写整个句子逆序的函数(在其中查找单词,找到后调用单词逆序的函数逆序,最后将整个句子逆序)。

 
程序缺点:只能识别几个常用的标点符号
 
源代码及测试程序:
//给定一个字符串,按单词将该字符串逆序,含标点     
#include<stdio.h>     
    
//start 和 end 之间逆序的函数  
void reverse_word(char *start, char *end)   
{    
    while(start < end)   
    {    
        *start = *start ^ *end;    
        *end = *start ^ *end;    
        *start = *start++ ^ *end--;    
    }    
}    
   
char *reverse_sentence(char *str)   
{    
    char *start = str;    
    char *end = str;    
    while(*end != ‘\0‘)   
    {    
        if(*end==‘ ‘ || *end==‘!‘ || *end==‘,‘ || *end==‘.‘ || *end==‘?‘)//查到一个单词   
        {    
            if(start < end)//只有一个字母的单词不逆序  
                reverse_word(start, end-1);    
   
            while(*end==‘ ‘ || *end==‘!‘ || *end==‘,‘ || *end==‘.‘ || *end==‘?‘)  
                end++; //指向下一个单词首字符     
   
            start = end;    
        }    
        else   
            end++;    
    }    
    reverse_word(str, end-1);//整个句子逆序     
     
    return str;    
}    
     
int main(int argc, char *argv[])   
{    
    char str[] = "Hello, I am glad to see you!";  
   
    printf("%s\n", str);    
    printf("%s\n", reverse_sentence(str));    
     
    return 0;    
}

  

按单词逆序句子(含标点)

标签:

原文地址:http://www.cnblogs.com/starainDou/p/4716167.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!