一 字符串中的字节逆转(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;
}
版权声明:本文博主原创文章。博客,未经同意不得转载。