當前位置:首頁 » 編程語言 » c語言中兩個字元串互換的函數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言中兩個字元串互換的函數

發布時間: 2023-06-01 15:34:13

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++='';
while(*b++=*a++);
}
elseif(*b){
*a++=*b,*b++='';
while(*a++=*b++);
}
}

Ⅸ c語言 字元串替換函數

替換函數主要有strtr(),str_repalce()這兩個函數。
首先針對strtr函數第一種方式:
我們看看下面的舉例:
<?php
echo strtr("I Love you","Lo","lO");
?>
得到的結果是:
I lOve yOu
這個結果提醒我們:
1.strtr它是區分大小寫的
2.strtr的替換是很特殊的,你注意看後面那個yOu,中間的O被替換的,這顯然不是我們的本意。
再舉一個特殊例子,說明這個php的sttr函數的怪異
<?php
echo strtr("I Love you","Love","");
?>
結果是:
I Love you
什麼也不會改變,所以strtr需要注意的是:
3.不能被替換為空,也就是末位那個參數不能是空字元串,當然空格是可以的。
再次舉例strtr函數的另一種情況:
<?php
echo strtr("I Loves you","Love","lOvEA");
?>
結果是:
I lOvEs yOu
注意看第三個參數的A,在結果中並沒有出現。
4.我不建議用strtr以少換多。
ok,既然這個strtr函數挺麻煩為什麼還要用呢?
原因是,它的速度很快。據說,strtr 比 str_replace 快四倍。
5.能用strtr函數的時候一定要用。
第二種情況:
strtr(string,array)
6.strtr符合意願的使用方法
<?php
$table_change = array('you'=>'her sister');
echo strtr("I Love you",$table_change);
?>
結果為:
I Love her sister
7.小技巧:你想到替換什麼你就往數組加什麼
比如:
<?php
$table_change = array('you'=>'her sister');
$table_change += array('Love' => 'hate');
echo strtr("I Love you",$table_change);
?>
結果是:
I hate her sister
再次提醒那個Love 寫成love 是行不通的哦。
字元串取代。
語法: string str_replace(string needle, string str, string haystack);
返回值: 字元串
函數種類: 資料處理
內容說明
本函數將字元串 str 代入 haystack 字元串中,將所有的 needle 置換成 str。

下例將 %body% 以 black 取代
<?php
$bodytag = str_replace("%body%", "black", "<body text=%body%>");
echo $bodytag;
?>
格式:
[@str_replace("要替換的舊內容", "要取代原內容的新字元", $被替換內容的變數名)]
[@str_replace(array('舊1','舊2','舊3'), array('新1','新2','新3'), $被替換內容的變數名)]
[@str_replace(array('舊1','舊2','舊3'), '新內容', $被替換內容的變數名)]

實例:
多對一替換:想把內容欄位里所有的<p></p>標簽清除掉,替換成空 [@str_replace(array('<p>','</p>'), '', $Content)]
一對一替換:想把內容欄位里所有的<br>標簽換成<p> [@str_replace('<br>', '<p>', $Content)]
多對多替換:想把內容欄位里的<br>換成<br />, 同時<p>換<hr>,把</p>全清除 [@str_replace(array('<br>', '<p>','</p>'), array('<br />','<hr>',''), $Content)]

Ⅹ c語言怎麼把兩個字元串交換位置

利用strcpy()函數。

chara[10]="abed",b[10]="efg",t[10];
strcpy(t,a);//a復制給t
strcpy(a,b);//b復制給a
strcpy(b,t);//t復制給b

函數功能是字元串復制,將第一個參數指定的字元串復制到第二個參數指定的位置
兩個參數都是字元串首地址。
使用strcpy需要 #include<string.h>