Ⅰ 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++='