一 字元串按位元組反轉(this is a student ==> tneduts a si siht)
/*************************************************************************
> File Name: testStringByte.h
> Author: qiaozp
> Mail: [email protected]
> 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: [email protected]
> 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;
}