IVY DOM


 

人生就像一副复杂拼图
每个人总有属於自己的记忆碎片
优质美国空间-老薛主机|IVY DOM|Flowline|

联系我

RSS




十月 27, 2012

[开源]C++指针逆置字符串(学习源码)

C++指针逆置字符串

如 字符串中原有内容为 abcdefg 调用后内容为 gfedcba

指针操作:

取得原字符串的长度 循环到长度为0 连续将原最后一个字符赋值给新的指针

#include <iostream>
#include "stdlib.h"
#include <string.h>
using namespace std;
char r[10];
char* inverse(char *s)
{
int i=strlen(s)-1,j=0;
while(i>=0){
*(r+j)=*(s+i);
//cout<<"In function "<<*(r+j)<<endl;
i-=1;j+=1;
}
*(r+j)='\0';
return r;
}
void main()
{
char *s;
char a[10]="abcdefg";
s=inverse(a);
cout<<"\nafter inversing="<<s<<endl;
system("pause");
}

结果

以下为gengyanda修改版…

#include <iostream>
using namespace std;

char* strcpy(char* obj,char* ori){
for(int i=0;*(ori+i) != '\0';i++)
*(obj+i) = *(ori+i);

return obj;
}
int len(char &s)
{
int i=0;
char *p=&s;

while(*(p+i)!='\0'){
i+=1;
}
return i;
}
char& inverse(char &s)
{
int i=len(s)-1,j=0;
char r[20],*p=&s;
strcpy(r,&s);
while(i>=0){
*(p+j)=*(r+i);
cout<<*(p+j)<<","<<i<<endl;
i-=1;j+=1;
}
*(p+j)='\0';
return s;
}
int main()
{
char a[10] = "Hello";
inverse(*a);

cout<<"after inversing="<<a<<endl;

cin.ignore(1);
return 0;
}

 

相关文章

返回
  1. 暂无评论。

  1. 暂无 Trackback

You must be logged in to post a comment.