Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8608804
  • 博文数量: 1413
  • 博客积分: 11128
  • 博客等级: 上将
  • 技术积分: 14685
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-13 10:03
个人简介

follow my heart...

文章分类

全部博文(1413)

文章存档

2013年(1)

2012年(5)

2011年(45)

2010年(176)

2009年(148)

2008年(190)

2007年(293)

2006年(555)

分类: C/C++

2009-03-01 21:53:01

在C中进行字符串的操作可以说是非常频繁.先看一下的例子.
 

#include <iostream>

using namespace std;

void swap(char *src, char *des)
{

    char *t;
    t = src;
    src = des;
    des = t;
}
int main()
{
    char a[] ="abc";
    char b[] ="def";
    swap(a,b);
    cout << a << endl;
    cout << b << endl;
    return 0;
}

 

但是,结果却交没有交换.也就是地址并没有交换.也就是说地址并没有交换.用strcpy来代替,发现是可以的.

void swap(char *src, char *des)
{
    char t[100];
    strcpy(t,src);
    strcpy(src,des);
    strcpy(des,t);

}

 

/*这个最简单,效率也高,不过不能操作静态字符数组*/
void strswap(char **pStr1, char **pStr2)
{
char *temp = *pStr1;
*pStr1 = *pStr2;
*pStr2 = temp;
}

下面的内容来自转载,不过很有参考价值:

交换两个字符串数据。
一:字符指针

  1. int main()
  2. {
  3.     void charsort2(char ** ,char **);
  4.         char * s1="abc";
  5.     char * s2="baihe";  
  6.     charsort2 (&s1,&s2);
  7.     cout<
  8.     cout<
  9.     return 0;   
  10. }
  11. void charsort2(char **s1,char **s2)
  12. {
  13.     char *p;
  14.     p=*s1;
  15.     *s1=*s2;
  16.     *s2=p;
  17. }

二:字符数组

  1. int main()
  2. {
  3.     void charsort( char * ,char * );
  4.         char s1[7]="abc";
  5.     char s2[7]="baihe"
  6.     charsort(s1,s2);
  7.     cout<
  8.     cout<
  9.     return 0;   
  10. }
  11. void charsort(char *s1,char *s2)
  12. {
  13.     char p[7];
  14.     strcpy(p,s1);
  15.     strcpy(s1,s2);
  16.     strcpy(s2,p);   
  17. }

三:字符串

  1. int main()
  2. {
  3.     void strsort(string *,string *);
  4.         string s1="abc";
  5.     string s2="baihe";  
  6.     strsort(&s1,&s2);
  7.     cout<
  8.     cout<
  9.     return 0;   
  10. }
  11. void strsort(string *s1,string *s2)
  12. {
  13.     string p;
  14.     p=*s1;
  15.         *s1=*s2;
  16.     *s2=p;
  17. }

四:引用

  1. int main()
  2. {
  3.     void strsort(string &,string &);
  4.         string s1="abc";
  5.     string s2="baihe";  
  6.     strsort(s1,s2);
  7.     cout<
  8.     cout<
  9.     return 0;   
  10. }
  11. void strsort(string & s1,string &s2)
  12. {
  13.     string p;
  14.     p=s1;
  15.     s1=s2;
  16.     s2=p;
  17. }

多谢论坛上朋友的分享.以下为新添方法:

五:指针引用:

  1. int main()
  2. {
  3.     void charsort2(char*& ,char*&);
  4.     char * s1="abc";
  5.     char * s2="baihe";    
  6.     charsort2 (s1,s2);
  7.     cout<
  8.     cout<
  9.     return 0;    
  10. }
  11. void charsort2(char *&s1,char *&s2)
  12. {
  13.     char *p;
  14.     p=s1;
  15.     s1=s2;
  16.     s2=p;
  17. }
阅读(2926) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-09-07 14:09:46

字符串溢出了,A是5个字符长度,B是三个,你不管三七二十一进行copy,肯定就跑到外面去了。

chinaunix网友2009-09-16 14:43:46

#include #include void main() { char A[]="酱油",B[]="醋",C[100]; strcpy(C,B); strcpy(B,A); strcpy(B,C); cout<<"A="<