程序员人生 网站导航

字符串翻转的两种方法(1:利用额外空间 2:交换)

栏目:php教程时间:2015-05-29 08:01:41
#include<iostream> using namespace std; #define STRLENTH 100 char *str_reverse1(char *str) { char temp[STRLENTH];//字符数组:寄存逆序后的字符 char *p = str; //字符指针:指向最后1个非''字符 int i = 0; /*找到最后1个非''字符并使p指向它*/ while(*p != '') { p++;//while循环以后p指向''p--后指向数组的最后1个字符(非'') } p--; /*将逆序后的字符寄存在临时空间temp中*/ while(p != str) { temp[i] = *p; i++; p--; } temp[i] = *p; //while循环以后第1个字符未寄存进去 temp[i+1] = '';//数组末尾f赋'' /*将逆序以后的字符拷贝到原数组中*/ strcpy(str,temp); return str; } char *str_reverse2(char *str) { char *p = str; //字符指针:指向最后1个非''字符 char *ret = str;//字符指针: 用于返回数组的首地址 /*找到最后1个非''字符并使p指向它*/ while(*p != '') { 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; }

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐