#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