Ⅰ c语言中怎样交换两个字符串
不同的情况做法是不同的。
1. 如果是字符数组,char a[50]="String A"迅枝昌; char b[50]="String B"; 则
#include<stdio.h>
voidstrexchg(char*a,char*b){
charc;
while(*a&&*b){
c=*a;*a=*b;*b=c;
a++;b++;
}
c=*a;*a=*b;*b=c;
if(*a)
do*++a=*++b;while(*b);
elseif(*b)
搭姿do*++b=*++a;while(*a);
}
intmain(){
chara[50]="StringA";charb[50]="StringB";
printf("BeforeExchange: StringAis"%s" StringBis"%s" ",a,b);
strexchg(a,b);
printf("AfterExchange: StringAis"%s" StringBis"%s" ",a,b);
return0;
}
2 如果两个都是字符指针变量,char *a="String A"; char*b="String B"; 则
#include<stdio.h>
voidstrexchg(char**a,char**b){
char*c;
c=*a;
*a=*b;
*b=c;
}
intmain(){
char*a="StringA";char*b="StringB";
printf("BeforeExchange: StringAis"%s" StringBis"%s" "亩扒,a,b);
strexchg(&a,&b);
printf("AfterExchange: StringAis"%s" StringBis"%s" ",a,b);
return0;
}
Ⅱ C语言,定义函数交换字符串数组
C语言中交换两个字符串需要借助strcpy函数或者使用自定义交换函数进行交换
如交换a,b数组中的字符串代码:
char a[10] = "abed", b[10] = "efg", t[10];strcpy(t, a);//a复制给tstrcpy(a, b);//b复制给astrcpy(b, t);//t复制给b
附:strcpy函数详情
原型声明:
char *strcpy(char* dest, const char *src);
头文件:
#include <string.h> 和 #include <stdio.h>
功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针。
Ⅲ C语言:字符串交换函数
while((*str=*str1)!=NULL);//无拦返历限的把str1的头地址元素'a'赋予简搜str的头地址,是一个死世碧循环
//下面的执行不了,不过也是错的
while((*str1=*str2)!=NULL);
while((*str2=*str)!=NULL);
Ⅳ c语言 指针交换两个字符串
长度不同,两者存放单元的个数应当都大于 最长的字符串,否则交换以后 存不下,会出错。
#include <stdio.h>
#include <stdlib.h>
void jh(char *p1, char *p2){
char *t;
int i,L;
L = strlen(p1);
if (strlen(p2) > L) L = strlen(p2);
t = (char *) malloc(sizeof(char) * L);
strcpy(t,p1);strcpy(p1,p2);strcpy(p2,t); // 交换
}
main(){
char s1[100]="abc", s2[100]="1234567"; // 实际允许存放量必需足够大
printf("%s %s \n",s1,s2);
jh(s1,s2);
printf("%s %s \n",s1,s2);
return 0;
}
Ⅳ 编写用引用形参实现两个字符串交换的函数,用c,谢谢.
void swap(char *s,char *c) //用指针传址实现交换
{
int i,j,m;
char t;
for(i=0;s[i]!='\0';i++);// 你没告诉我能不能用strlen 函数 我就纯手编敬漏了
for(j=0;c[j]!='\0';i++);// 也可以用 i=strlen(s) ; j=strlen(c);
m=i>j?i:j;
for(i=0;i<m;i++) // m为最大值,s[m]==c[m]=='\0',结束符就可以不用换了吧= =||
{
t=s[i];
s[i]=c[i];
c[i]=t;
}
}
/亮槐烂/ 调用:
char a[100],b[100];
gets(a);
gets(b);
puts(a);
puts(b);
swap(a,b);
puts(a);
puts(b);
最后还有一个问题要注意一下,两个要交换的字符数组的长度应该相同,或则说明链最长的字符串串长要比最短的数组的长度要短才行
Ⅵ 字符交换C语言
实现字符交换可以借助一个中间字符变量,比如要把字符变量a和b里面的内容交换,可以借助一个中间变量c,代码如下:
intmain()
{chara='O',b='J',c;
c=a;a=b;b=c;}
这样a和b里面的内容就会交换了。
当然,如果你需要写成一个函数,那必须传地址,否则函数里面的值换了,对函数外的变量没有影响。如果是写成函数要这样:
intswap(char*a,char*b)
{charc;
c=*a;
*a=*b;
*b=c;}
然后在主函数里可以这么调用:
intmain()
{chara='O',b='J';
swap(&a,&b);}
Ⅶ 求C语言替换字符串中某个字符的函数
#include "stdio.h"
#include "string.h"
void swap(char s[100],char a,char b)/*a为原来要替换的字符,b是替换后的字符*/
{
int i;
for(i=0;i<strlen(s);i++)
{
if(s[i]==a)
{
s[i]=b;
}
}
}
main()
{
char s[100];
char a,b;
int i;
printf("请输入一个字符串:\n");
gets(s);
printf("\n请输入要替换的字符和要替换后的字符,用逗号隔开:");
scanf("%c,%c",&a,&b);
swap(s,a,b);
puts(s);
}
Ⅷ c语言编程,使用指针做为函数参数,编写一个字符串交换函数,实现两个字符串内容的交换 急求,多谢!
#include<stdio.h>
voidswap(char*a,char*b){
intch;
while(*a&&*b)
ch=*a,*a=*b,*b=ch,a++,b++;
if(*a){
*b++=*a,*a++='