面试基础_01字符串反转操作

来源:互联网 发布:有个网络歌手老头唱歌 编辑:程序博客网 时间:2024/05/29 14:12


一 字符串按字节反转(this is a student ==> tneduts a si siht)
/*************************************************************************     > File Name: testStringByte.h    > Author: qiaozp     > Mail: qiaozongpeng@163.com     > Created Time: 2014-9-30 11:21:15    > Attention: this is a student ===> tneduts a si siht ************************************************************************/ #include <iostream>#include <string.h>using namespace std;void reverseByByte(char* p, char* e){    //方法就是按位赋值到目的字符串    int i = 0;    int size = strlen(p);    e[size] = '\0';    while((--size) >= 0)    {        e[i++] = p[size];    }}int main(){    char* p = "you are a student!";    char e[20] = {0};    reverseByByte(p, e);    cout << e << endl;}



二 字符串按单词反转(this is a student ==> student a is this)

/*************************************************************************     > File Name: testStringWord.h    > Author: qiaozp     > Mail: qiaozongpeng@163.com     > Created Time: 2014-9-30 11:21:15    > Attention: this is a student ===> student a is this************************************************************************/ #include <iostream>#include <string.h>using namespace std;void reverseByWord(char* p, char* e){    //方法就是记录每个整的单词的开始和结束位置,然后拷贝到目标字符串    int len = strlen(p);    int end = len;    int start = 0;    memset(e, 0, len);    while(len > 0)    {        end = len;        while ((p[len - 1] != ' ') && (len > 0))        {            --len;        };        start = len--;        strncpy(e + strlen(e), p + start, end - start);        e[strlen(e)] = ' ';    }    e[strlen(e) - 1] = '\0';      //多出一个空格  谢谢二楼的提醒 }int main(){    char* p = "you are a student!";    char e[20] = {0};    reverseByWord(p, e);    cout << e << endl;}











1 0