编程菜鸟的日记-初学尝试编程-实现字符串的逆序
一:
//若源字符串为"abc”,得到其逆序字符串"cba”,
//在允许开辟新的动态空间则可以逆序拷贝进新的空间,即可实现逆序输出原始字符串
#include <iostream>
using namespace std;
char *strInverse(char *str)
{
char *p=new char[sizeof(char)*(strlen(str)+1)];//开辟一个新的存储空间,保存逆序字符串
char *New=p; //用于返回新的逆序字符串的首地址
char *end=str;
end+=(strlen(str)-1)*sizeof(char);//指向字符串str的最后一个字符不包含'\0'
while(end>=str)
{
*p++=*end--;
}
*p='\0';//添加结束标识符
return New;
}
void main()
{
char *str="abdkced";
cout<<"输入字符串:"<<str<<endl;
char *New;
New=strInverse(str);
cout<<"逆序字符串:"<<New<<endl;
system("pause");
}
二:在原始字符串序列基础上进行逆序,不允许利用新的存储空间
//若源字符串为"abc”,得到其逆序字符串"cba”,原地逆序
char *InplaceInverse(char *str)
//初始化两个指针,一个指向字符串首,另一个指向字符串尾
{
char *p=str;
char *q=str;
char temp;
q=q+(strlen(str)-1)*sizeof(char);
while(p!=NULL && q!=NULL && p<q)
{
temp=*p;
*p=*q;
*q=temp;
p++;
q--;
}
return str;
}
void main()
{
char str[]="abdkced";//需要区别初始化char *str=”abdkced“,这样是str是指向字符串的指针常量不可以被修改
cout<<"输入字符串:"<<str<<endl;
char *New;
New=InplaceInverse(str);
//New=strInverse(str);
cout<<"逆序字符串:"<<New<<endl;
system("pause");
}