當前位置:首頁 » 編程語言 » c語言replace

c語言replace

發布時間: 2022-08-26 18:43:11

c語言作業:用子函數replace()將用戶輸入的字元串中的所有字元b/B都替換為c/C,並返回總共替換字元的個數

#include<stdio.h>
intreplace(char*s,intb,intc)
{intn=0;
for(;*s;s++)
if(*s>='A'&&*s%32==b)
{*s+=(*s%32-b+c)%32-*s%32;
n++;
}
returnn;
}
intmain()
{charb,c='E',s[200];
intn;
gets(s);
scanf("%c%*c%c",&b,&c);
if(b>='A'&&b<='Z')b-='A';
elseb-='a';
if(c>='A'&&c<='Z')c-='A';
elsec-='a';
n=replace(s,b+1,c+1);
printf("%s 總共替換%d個 ",s,n);
return0;
}

㈡ 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語言:字元替換。要求用函數replace將用戶輸入的字元串中的字元t(T)都替換為e(E),並返回替換字元的個數

改成這樣就行了

#include<stdio.h>
intreplace(chara[]);
intmain()
{
chara[20];
intn;
scanf("%s",a);
n=replace(a);
printf("%s替換字元的個數:%d ",a,n);
return0;
}
intreplace(chara[])
{
intn=0;
inti;
for(i=0;a[i]!='';i++)
{
if(a[i]=='t')
{
n=n+1;
a[i]='e';
}
elseif(a[i]=='T')
{
n=n+1;
a[i]='E';
}
}
returnn;

㈣ C語言指針函數替換字元

char
*replace(char
*source,
char
*sub,
char
*rep)
{
char
*result;
/*pc1
是復制到結果result掃描指針*/
/*pc2
是掃描
source
輔助指針*/
/*pc3
尋找子串時,為檢查變化中source是否和子串相等,是指向sub掃描指針
*/
/*找到匹配後,為了復制到結果串,是指向rep掃描指針*/
char
*pc1,
*pc2,
*pc3;
int
isource,
isub,
irep;
isub
=
strlen(sub);
/*對比串長度*/
irep
=
strlen(rep);
/*替換串長度*/
isource=
strlen(source);
/*源串長度*/
if(NULL==*sub)
return
strp(source);
/*申請結果串需要空間*/
result
=
(char
*)malloc(((irep>isub)?(float)strlen(source)/isub*irep+1:isource)*sizeof(char));
pc1
=
result;
/*為pc1依次復制結果串每個位元組作準備*/
while(*source
!=
NULL)
{
/*為檢查source和sub是否相等作準備,為pc2,pc3
賦初值*/
pc2
=
source;
pc3
=
sub;
/*
出循環(任)條件是:
*
*pc2
不等於
*pc3
(和子串不相等)
*
pc2
到源串結尾
*
pc3
到源串結尾
(此時,檢查了全部子串,source處和sub相等)
*****************************************************/
while(*pc2==*pc3
&&
*pc3
!=
NULL
&&
*pc2
!=
NULL)
pc2++,
pc3;
/*
如果找到了子串,進行以下處理工作*/
if(NULL==*pc3)
{
pc3
=
rep;
/*將替代串追加到結果串*/
while(*pc3
!=
NULL)
*pc1
=
*pc3;
pc2--;
source
=
pc2;
/*
檢查
source和sub相等循環結束後
*
pc2
對應位置是在
sub
中串結束符處該是源串中下個位置
*

source
指向其前面個
***************************************************/
}
/*如果沒找到子串,下面復制source所指位元組到結果串*/
*pc1
=
*source;
source;
/*
將source向後移個*/
}
*pc1
=
NULL;
result;
}

㈤ C語言寫一個替換字元串的程序

#include<stdio.h>
#include<malloc.h>
#include<memory.h>
#include<string.h>
char*replace(char*str,constchar*before,constchar*after)
{
if(strcmp(before,after)==0)
returnstr;
char*ps=str;
char*tmps;
intfl;
while(ps=strstr(ps,before))
{
tmps=(char*)malloc(ps-str+strlen(after)+1);
memcpy(tmps,str,ps-str);
*(tmps+(ps-str))=0;
strcat(tmps,after);
ps+=strlen(before);
tmps=(char*)realloc(tmps,strlen(tmps)+strlen(ps)+1);
fl=strlen(tmps);
strcat(tmps,ps);
strcpy(str,tmps);
ps=str+fl;
free(tmps);
}
returnstr;
}
intmain()
{
charstr[200]="1223344222333444";
printf("%s ",replace(str,"22","ABC"));
return0;
}

哦,不能用strstr和memcpy啊,改了下:

#include<stdio.h>
#include<malloc.h>
#include<string.h>
char*fstr(char*str,constchar*subs)
{
char*t=(char*)malloc(strlen(subs)+1);
char*ps=str;
inti;
intslen=strlen(subs);
*(t+slen)=0;
while(strlen(ps)>=slen)
{
for(i=0;i<slen;++i)
{
*(t+i)=*(ps+i);
}
if(strcmp(t,subs)==0)
{
free(t);
returnps;
}
++ps;
}
free(t);
returnNULL;
}
char*replace(char*str,constchar*before,constchar*after)
{
if(strcmp(before,after)==0)
returnstr;
char*ps=str;
char*tmps;
intfl,i;
while(ps=fstr(ps,before))
{
tmps=(char*)malloc(ps-str+strlen(after)+1);
for(i=0;i<ps-str;++i)
*(tmps+i)=*(str+i);
*(tmps+(ps-str))=0;
strcat(tmps,after);
ps+=strlen(before);
tmps=(char*)realloc(tmps,strlen(tmps)+strlen(ps)+1);
fl=strlen(tmps);
strcat(tmps,ps);
strcpy(str,tmps);
ps=str+fl;
free(tmps);
}
returnstr;
}
intmain()
{
charstr[200]="1223344222333444";
printf("%s ",replace(str,"22","ABC"));
return0;
}

㈥ C語言字元串替換

C語言實現字元串替換函數:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
//字元串替換函數
/********************************************************************
* Function: my_strstr()
* Description: 在一個字元串中查找一個子串;
* Input: ps: 源; pd:子串
* Return : 0:源字元串中沒有子串; 1:源字元串中有子串;
*********************************************************************/
char * my_strstr(char * ps,char *pd)
{
char *pt = pd;
int c = 0;
while(*ps != '\0')
{
if(*ps == *pd)
{
while(*ps == *pd && *pd!='\0')
{
ps++;
pd++;
c++;
}
}else
{
ps++;
}
if(*pd == '\0')
{
return (ps - c);
}
c = 0;
pd = pt;
}
return 0;
}

/********************************************************************
* Function: memcpy()
* Description: 復制一個內存區域到另一個區域;
* Input: src: 源;
count: 復制位元組數.
* Output: dest: 復制目的地;
* Return : dest;
*********************************************************************/
void * memcpy(void * dest,const void *src,size_t count)
{
char *tmp = (char *) dest, *s = (char *) src;
while (count--)
*tmp++ = *s++;
return dest;
}

/********************************************************************
* Function: str_replace()
* Description: 在一個字元串中查找一個子串,並且把所有符合的子串用
另一個替換字元串替換。
* Input: p_source:要查找的母字元串; p_seach要查找的子字元串;
p_repstr:替換的字元串;
* Output: p_result:存放結果;
* Return : 返回替換成功的子串數量;
* Others: p_result要足夠大的空間存放結果,所以輸入參數都要以\0結束;
*********************************************************************/
int str_replace(char *p_result,char* p_source,char* p_seach,char *p_repstr)
{
int c = 0;
int repstr_leng = 0;
int searchstr_leng = 0;

char *p1;
char *presult = p_result;
char *psource = p_source;
char *prep = p_repstr;
char *pseach = p_seach;
int nLen = 0;

repstr_leng = strlen(prep);
searchstr_leng = strlen(pseach);

do{
p1 = my_strstr(psource,p_seach);

if (p1 == 0)
{
strcpy(presult,psource);
return c;
}
c++; //匹配子串計數加1;
printf("結果:%s\r\n",p_result);
printf("源字元:%s\r\n",p_source);

// 拷貝上一個替換點和下一個替換點中間的字元串
nLen = p1 - psource;
memcpy(presult, psource, nLen);

// 拷貝需要替換的字元串
memcpy(presult + nLen,p_repstr,repstr_leng);

psource = p1 + searchstr_leng;
presult = presult + nLen + repstr_leng;
}while(p1);

return c;
}
#define MAX 200
int main(void)
{
int i = 0;
char s[MAX] ={0}; //存放源字串
char s1[MAX]={0}; //存放子字串
char s2[MAX]={0}; //存放替換字串
char result_a[2000] = {0};//存放替換結果;
char *p,*ptm,*pr;
puts("Please input the string for s:");
scanf("%s",s);
puts("Please input the string for s1:");
scanf("%s",s1);
puts("Please input the string for s2:");
scanf("%s",s2);
ptm = s;
pr = result_a;
i = str_replace(pr,ptm,s1,s2);
printf("替換%d個子字元串;\r\n",i);
printf("替換後結果:%s\r\n",result_a);
system("pause");
}

㈦ C語言如何去掉字元串中換行符

C語言可以使用Replace函數去掉字元串中換行符。即Replace(字元串,'\n','')。

Replace函數語法為Replace (Expression, Find, ReplaceWith [, Start] [, Count] [, Compare])。

Expression必需的。代表將要執行替換操作的字元串。

Find必需的。代表要搜索的字元串。

ReplaceWith必需的。代表用於替換的字元串。

Start可選的。代表決定從Expression開頭向結尾數的第幾位開始搜索,默認值為1。

Count可選的。代表限制進行替換的次數,默認值為-1,即進行所有的替換。

Compare可選的。代表決定判斷子字元串的比較方式。

(7)c語言replace擴展閱讀:

Replace函數如果搜索的字元串是一個數組,那麼它將返回一個數組。如果搜索的字元串是一個數組,那麼它將對數組中的每個元素進行查找和替換。

如果同時需要對某個數組進行查找和替換,並且需要執行替換的元素少於查找到的元素的數量,那麼多餘的元素將用空字元串進行替換。如果是對一個數組進行查找,但只對一個字元串進行替換,那麼替代字元串將對所有查找到的值起作用

㈧ C語言 字元串替換replace() 求加每句注釋...........謝謝. ....沒分了,有分了追加....

#include<stdio.h>
#include<string.h>
#include <stdlib.h>
//參數,src 字元串源,sub想要替換的字元串,dst,用來替換的字元串
char*replace(char*src, char*sub, char*dst)
{
//記錄當前指針位置
int pos =0;
//記錄偏移

int offset =0;
//字元串長度
int srcLen, subLen, dstLen;
//返回內容

char*pRet = NULL;

//求得各字元串長度

srcLen = strlen(src);
subLen = strlen(sub);
dstLen = strlen(dst);
//申請替換後的字元串緩沖區。用dst替換sub,所以應該是srclen-sublen+dstlen,+1流出'\0'位置
pRet = (char*)malloc(srcLen + dstLen - subLen +1);//(外部是否該空間)if (NULL != pRet)
{
//strstr查找sub字元串出現的指針。該指針減去src地址。得到相對位置
pos = strstr(src, sub) - src;
//拷貝src字元串,從首地址開始,pos個字元。
memcpy(pRet, src, pos);
//增加偏移位置到pos
offset += pos;
//拷貝dst到返回內容中。
memcpy(pRet + offset, dst, dstLen);
//重新定位偏移
offset += dstLen;
//拷貝src中,sub字元串後面的字元串到pRet中
memcpy(pRet + offset, src + pos + subLen, srcLen - pos - subLen);
//重新定位偏移
offset += srcLen - pos - subLen;
//最後添加字元串結尾標記'\0'
*(pRet + offset) ='\0';
}
//返回新構造的字元串
return pRet;
}

熱點內容
如何帳戶密碼 發布:2025-01-17 07:56:11 瀏覽:612
伺服器內網ip地址安全 發布:2025-01-17 07:33:18 瀏覽:186
華為新演算法 發布:2025-01-17 07:31:43 瀏覽:56
希沃如何存儲 發布:2025-01-17 07:31:00 瀏覽:552
演算法研讀 發布:2025-01-17 07:19:37 瀏覽:280
我的世界橙子生存之旅伺服器ip 發布:2025-01-17 07:19:27 瀏覽:618
用戶名密碼錯誤導致認證失敗是什麼意思 發布:2025-01-17 06:58:24 瀏覽:329
安卓空調遙控器在哪裡 發布:2025-01-17 06:43:54 瀏覽:196
安卓版什麼做視頻軟體好用 發布:2025-01-17 06:43:14 瀏覽:337
神超電腦配置哪個好 發布:2025-01-17 06:35:50 瀏覽:575