C++实现字符串反转

来源:互联网 发布:索隆 知乎 编辑:程序博客网 时间:2024/06/05 04:32
/****  reversestr.cpp**  实现字符串反转**  如输入是 You are a lucky dog ! 输出是 !dog lucky a are You*/#include<iostream>#include<string.h>using namespace std;void reversestr(char *start,char *end);int main(){    char *temp;    char *start;    char *end;    const char *str = "You are a lucky dog !";    char *s = new char[strlen(str)]();    strcpy(s,str);    //首先反转整个字符串;    reversestr(s,s+strlen(str)-1);    temp = s;    //start 指向子串的最后一个字符;    start = temp;    //接下来反转各个单词;    //循环判断条件可以直接写作,while(*temp){//具体内部语句相同}     while(*temp!='\0')    {        if(*temp!=' ')        {        }        else if(*temp==' ')        {        //满足该else if 条件,则说明当前temp 指向最靠近上一个单词的“空格字符”       //end 指向子串的最后一个字符;            end = temp - 1;            reversestr(start,end);           //更新start指针,使它始终指向子串的第一个字符;           start = temp + 1;        }        ++temp;     }    //循环结束之后,temp 指向整个字符串的结束标志'\0'    //将temp减1,使其指向整个字符串的有效字符的最后一个;    end = temp - 1;    reversestr(start,end);    //循环判断条件可以直接写作,while(*s){//具体内部语句相同}     while(*s!='\0')    {        cout<<*s;        ++s;    }    cout<<endl;    system("pause");    return 0;}/**      实现字符串的反转操作*      初始,start指向字符串第一个字符;*      初始,end指向字符串最后一个字符;*/void reversestr(char *start,char *end){    char temp;    while(start<end)    {        temp = *start;        *start++ = *end;        *end-- = temp;    }}

0 0
原创粉丝点击