#include<iostream>
using namespace std;
#define STRLENTH 100
char *str_reverse1(char *str)
{
char temp[STRLENTH];//字符数组:存放逆序后的字符
char *p = str; //字符指针:指向最后一个非'\0'字符
int i = 0;
/*找到最后一个非'\0'字符并使p指向它*/
while(*p != '\0')
{
p++;//while循环之后p指向'\0'p--后指向数组的最后一个字符(非'\0')
}
p--;
/*将逆序后的字符存放在临时空间temp中*/
while(p != str)
{
temp[i] = *p;
i++;
p--;
}
temp[i] = *p; //while循环之后第一个字符未存放进去
temp[i+1] = '\0';//数组末尾f赋'\0'
/*将逆序之后的字符拷贝到原数组中*/
strcpy(str,temp);
return str;
}
char *str_reverse2(char *str)
{
char *p = str; //字符指针:指向最后一个非'\0'字符
char *ret = str;//字符指针: 用于返回数组的首地址
/*找到最后一个非'\0'字符并使p指向它*/
while(*p != '\0')
{
p++;
}
p--;
/*对称的字符交换---->达到字符的翻转*/
char tmp;
while(str < p)
{
tmp = *str;
*str = *p;
*p = tmp;
str++;
p--;
}
return ret;
}
int main()
{
char str[] = "abcdefghij";
cout<<str_reverse2(str)<<endl;
return 0;
}
原文地址:http://blog.csdn.net/zongyinhu/article/details/45419979