| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 621 人关注过本帖
标题:字符串处理
只看楼主 加入收藏
周1992
Rank: 2
等 级:论坛游民
帖 子:70
专家分:60
注 册:2011-3-18
结帖率:76.92%
收藏
已结贴  问题点数:20 回复次数:12 
字符串处理
怎样可以简单的将两个字符串交换??
如:a[5]=qwert;b[5]=dcdfd;
  交换后a[5]=dcdfd;b[5]=qwert;
  请指教!
搜索更多相关主题的帖子: 字符串 
2011-06-02 12:41
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:5 
程序代码:
#include <stdio.h>

void swap(char * p1, char * p2) {
    if(p1 == p2)
        return;
    *p1 ^= *p2;
    *p2 ^= *p1;
    *p1 ^= *p2;
}

int main(void) {
    char a[] = "qwert", b[] = "dcdfd";
    char * p1 = a, * p2 = b;
    printf("Before swap : \na : %s\nb : %s\n", a, b);
    while(*p1 && *p2)
        swap(p1++, p2++);
    printf("After swap : \na : %s\nb : %s\n", a, b);
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册



My life is brilliant
2011-06-02 13:01
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
收藏
得分:5 
这和普通变量交换差不多。你可以设置一个中间变量。就可以交换了。不过。关键一点是。字符串的交换不能像普通变量一样赋值交换。(即不能像:temp = a; a = b; b = temp;),而需要用系统函数:strcpy();你可以这样:
     char str1[20]={"beijing"},str2[20]={"qindao"}, temp[20];
     strcpy(temp,str1);
     strcpy(str1,str2);
     strcpy(str2,temp); //这样应该就可以了。注意使用strcpy要用到# include <string.h>头文件。具体楼主去上机试一下吧。编译一下看看;
2011-06-02 13:10
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
收藏
得分:0 
当然。还可用指针。方法很多的呢。
2011-06-02 13:11
Pirelo
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:118
专家分:550
注 册:2011-1-28
收藏
得分:5 
思路就是:
temp=a;
a=b;
b=temp;
程序代码:
#include <iostream>
using namespace std;

void main()
{
  char a[6]="qwert",b[6]="dcdfd",temp[6];
  for(int i=0;i<6;i++)
  {
      temp[i]=a[i];
      a[i]=b[i];
      b[i]=temp[i];
  }

  for( i=0;i<5;i++)
  {
      cout<<"a["<<i<<"]="<<a[i]<<endl;
      cout<<"b["<<i<<"]="<<b[i]<<endl;
  }
}


2011-06-02 13:12
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:216
帖 子:1507
专家分:9241
注 册:2010-3-16
收藏
得分:0 
楼上的就可以,
temp不用定义为数组,只需定义 char temp就可以了。
2011-06-02 13:15
木头lbj
Rank: 7Rank: 7Rank: 7
来 自:黄山
等 级:黑侠
威 望:1
帖 子:269
专家分:527
注 册:2010-11-6
收藏
得分:0 
去中间量交换就可以、、、、

。。。!!!)))000
2011-06-02 13:19
木头lbj
Rank: 7Rank: 7Rank: 7
来 自:黄山
等 级:黑侠
威 望:1
帖 子:269
专家分:527
注 册:2010-11-6
收藏
得分:5 
程序代码:
#include <stdio.h>
int main()
{
    char a[5]= "qwert";
    char b[5]= "dcdfd";
    char c[5];
    int i;
    for(i = 0;i < 5;i ++)
    {
        c[i] = a[i];
        a[i] = b[i];
        b[i] = c[i];
    }
    for(i = 0;i < 5;i ++)
    {
        printf("%c",a[i]);
    }
    printf("\n\n");
        for(i = 0;i < 5;i ++)
    {
        printf("%c",b[i]);
    }
    return 0;
}

。。。!!!)))000
2011-06-02 13:26
烟雾中的迷茫
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:621
专家分:1069
注 册:2011-2-9
收藏
得分:0 
另外 楼主 数组赋值用错 应该是char a[5]="quert";
2011-06-02 17:13
lg888
Rank: 2
等 级:论坛游民
帖 子:13
专家分:46
注 册:2010-6-10
收藏
得分:0 
#include <stdio.h>
void main()
{
    char a[]="qwert";
    char b[]="dcdfd";
    char temp[10];
    printf("before swap:\n");
    puts(a);
    puts(b);
    strcpy(temp,a);
    strcpy(a,b);
    strcpy(b,temp);
    printf("after swap:\n");
    puts(a);
    puts(b);
}
2011-06-02 19:57
快速回复:字符串处理
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030390 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved