C语言中怎样交换两个字符串
答案:3 悬赏:60
解决时间 2021-02-12 19:37
- 提问者网友:沉默的哀伤
- 2021-02-12 08:25
C语言中怎样交换两个字符串
最佳答案
- 二级知识专家网友:晚安听书人
- 2021-02-12 09:16
不同的情况做法是不同的。
1. 如果是字符数组,char a[50]="String A"; char b[50]="String B"; 则
#include<stdio.h>
void strexchg(char *a, char *b){
char c;
while(*a && *b){
c= *a; *a = *b; *b = c;
a++; b++;
}
c= *a; *a = *b; *b = c;
if(*a)
do *++a = *++b; while(*b);
else if(*b)
do *++b = *++a; while(*a);
}
int main(){
char a[50]="String A"; char b[50]="String B";
printf("Before Exchange :\n\tString A is \"%s\"\n\tString B is \"%s\"\n",a,b);
strexchg(a,b);
printf("After Exchange :\n\tString A is \"%s\"\n\tString B is \"%s\"\n",a,b);
return 0;
}2 如果两个都是字符指针变量,char *a="String A"; char *b="String B"; 则
#include<stdio.h>
void strexchg(char **a, char **b){
char *c;
c=*a;
*a=*b;
*b=c;
}
int main(){
char *a="String A"; char *b="String B";
printf("Before Exchange :\n\tString A is \"%s\"\n\tString B is \"%s\"\n",a,b);
strexchg(&a,&b);
printf("After Exchange :\n\tString A is \"%s\"\n\tString B is \"%s\"\n",a,b);
return 0;
}
1. 如果是字符数组,char a[50]="String A"; char b[50]="String B"; 则
#include<stdio.h>
void strexchg(char *a, char *b){
char c;
while(*a && *b){
c= *a; *a = *b; *b = c;
a++; b++;
}
c= *a; *a = *b; *b = c;
if(*a)
do *++a = *++b; while(*b);
else if(*b)
do *++b = *++a; while(*a);
}
int main(){
char a[50]="String A"; char b[50]="String B";
printf("Before Exchange :\n\tString A is \"%s\"\n\tString B is \"%s\"\n",a,b);
strexchg(a,b);
printf("After Exchange :\n\tString A is \"%s\"\n\tString B is \"%s\"\n",a,b);
return 0;
}2 如果两个都是字符指针变量,char *a="String A"; char *b="String B"; 则
#include<stdio.h>
void strexchg(char **a, char **b){
char *c;
c=*a;
*a=*b;
*b=c;
}
int main(){
char *a="String A"; char *b="String B";
printf("Before Exchange :\n\tString A is \"%s\"\n\tString B is \"%s\"\n",a,b);
strexchg(&a,&b);
printf("After Exchange :\n\tString A is \"%s\"\n\tString B is \"%s\"\n",a,b);
return 0;
}
全部回答
- 1楼网友:一起来看看吧
- 2021-02-12 11:17
#include<stdio.h>
#include<string.h>
int main()
{
char a[],b[],temp[];
gets(a);
gets(b);
strcpy(temp,a);
strcpy(a,b);
strcpy(b,temp);
return 0;
}
- 2楼网友:强势废物
- 2021-02-12 09:45
字符串a,与字符串b交换。
这样。
.......
char *c;
strcpy(c,a);
strcpy(a,b);
strcpy(b,c);
...........
成功交换。
如果不用库函数,那么也好办。
自己写个串拷贝函数
str_cpy(char *a,char *b) //假设是将b拷贝到a中,注意不是交换
{
while(*b!='\0') //如果字符串b未结束
*(a++)=*(b++);//一位位覆盖进去
*a='\0';//加上结束标志
}
将上面的strcpy替换成这个函数 也成。
测试成功
那么整个程序可以这么写。
void str_cpy(char *a,char *b) //假设是将b拷贝到a中,注意不是交换
{
while(*b!='\0') //如果字符串b未结束
*(a++)=*(b++);//一位位覆盖进去
*a='\0';//加上结束标志
}
void swap(char *a,char *b)
{
char *c;
str_cpy(c,a);
str_cpy(a,b);
str_cpy(b,c);
}
int main()
{
char *str1="123456",*b="654321"
swap(str1,str2);//完成交换
.........
return 0;
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |