成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

c語言函數(shù)的怎樣替換 c語言替換語句

c語言運(yùn)用函數(shù)替換字符串中的數(shù)字求助大佬

#include stdio.h

為朔城等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及朔城網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計制作、網(wǎng)站設(shè)計、朔城網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

#define N 80

/* 請?jiān)谶@里填寫答案 */

void f(char *c,char a)

{

for(;*c;c++)

? if(*c='0'*c='9')

? ? ? *c=a;

}

int main(void)

{

char c[N], a;

gets(c);

scanf("%c", a);

f(c, a);

printf("%s", c);

return 0;

}

求C語言替換字符串中某個字符的函數(shù)

1、C語言中沒有提供字符串替換函數(shù),網(wǎng)上能找到的類似函數(shù)也只是能替換一個,不能替換全部,工作中卻常常要用到這個功能,故實(shí)現(xiàn)一個函數(shù)。該函數(shù)所使用到的相關(guān)函數(shù)均是自己實(shí)現(xiàn),沒有調(diào)用庫函數(shù)。

2、函數(shù)代碼如下:

/*descript:replace?str,返回一個替換以后的字符串,用完之后要free()

success:return?1

error:return?0

BUG:"select?*?from?tab?where?id=':a'?and?name?=':aa'",this?is?not?support,this?function?is?just?simple?str_replace?,not?support?all?SQL?language

*/

char?*replacestr(char?*strbuf,?char?*sstr,?char?*dstr)

{???????char?*p,*p1;

int?len;

if?((strbuf?==?NULL)||(sstr?==?NULL)||(dstr?==?NULL))

return?NULL;

p?=?strstr(strbuf,?sstr);???????//返回字符串第一次出現(xiàn)的地址,否則返回NULL

if?(p?==?NULL)??/*not?found*/

return?NULL;

len?=?strlen(strbuf)?+?strlen(dstr)?-?strlen(sstr);

p1?=?malloc(len);

bzero(p1,?len);

strncpy(p1,?strbuf,?p-strbuf);

strcat(p1,?dstr);

p?+=?strlen(sstr);

strcat(p1,?p);

return?p1;

}

C語言關(guān)于函數(shù)的替換

A函數(shù)的源碼可控嗎?如果可控,把對B函數(shù)的調(diào)用改成對新實(shí)現(xiàn)的調(diào)用就行了。

如果A函數(shù)不是自己寫的(源碼不可控),會麻煩一些。例如,在支持指針的語言上,可以修改B函數(shù)入口部分的匯編代碼,jmp到自己的新實(shí)現(xiàn)。要求B函數(shù)和你的實(shí)現(xiàn)原型必須完全相同。

C語言指針函數(shù)替換字符

char

*replace(char

*source,

char

*sub,

char

*rep)

{

char

*result;

/*pc1

是復(fù)制到結(jié)果result掃描指針*/

/*pc2

是掃描

source

輔助指針*/

/*pc3

尋找子串時,為檢查變化中source是否和子串相等,是指向sub掃描指針

*/

/*找到匹配后,為了復(fù)制到結(jié)果串,是指向rep掃描指針*/

char

*pc1,

*pc2,

*pc3;

int

isource,

isub,

irep;

isub

=

strlen(sub);

/*對比串長度*/

irep

=

strlen(rep);

/*替換串長度*/

isource=

strlen(source);

/*源串長度*/

if(NULL==*sub)

return

strdup(source);

/*申請結(jié)果串需要空間*/

result

=

(char

*)malloc(((irepisub)?(float)strlen(source)/isub*irep+1:isource)*sizeof(char));

pc1

=

result;

/*為pc1依次復(fù)制結(jié)果串每個字節(jié)作準(zhǔn)備*/

while(*source

!=

NULL)

{

/*為檢查source和sub是否相等作準(zhǔn)備,為pc2,pc3

賦初值*/

pc2

=

source;

pc3

=

sub;

/*

出循環(huán)(任)條件是:

*

*pc2

不等于

*pc3

(和子串不相等)

*

pc2

到源串結(jié)尾

*

pc3

到源串結(jié)尾

(此時,檢查了全部子串,source處和sub相等)

*****************************************************/

while(*pc2==*pc3

*pc3

!=

NULL

*pc2

!=

NULL)

pc2++,

pc3;

/*

如果找到了子串,進(jìn)行以下處理工作*/

if(NULL==*pc3)

{

pc3

=

rep;

/*將替代串追加到結(jié)果串*/

while(*pc3

!=

NULL)

*pc1

=

*pc3;

pc2--;

source

=

pc2;

/*

檢查

source和sub相等循環(huán)結(jié)束后

*

pc2

對應(yīng)位置是在

sub

中串結(jié)束符處該是源串中下個位置

*

source

指向其前面?zhèn)€

***************************************************/

}

/*如果沒找到子串,下面復(fù)制source所指字節(jié)到結(jié)果串*/

*pc1

=

*source;

source;

/*

將source向后移個*/

}

*pc1

=

NULL;

result;

}

c語言中完成一個自定義函數(shù),替換指定字符串中的對應(yīng)字符的代碼

#include?"stdafx.h"

#include?stdio.h

#include?string.h

void?replaceChar(char?*string,?char?oldChar,?char?newChar){

int?len?=?strlen(string);

int?i;

for?(i?=?0;?i??len;?i++){

if?(string[i]?==?oldChar){

string[i]?=?newChar;

}

}

}

int?main(){

char?str[]?=?"test";

char?oldChar?=?'t';

char?newChar?=?'w';?

replaceChar(str,?oldChar,?newChar);

printf("%s\n",?str);

return?0;

}

C語言中,宏替換的替換規(guī)則

簡單來說:宏定義又稱為宏代換、宏替換,簡稱“宏”。宏替換是C/C++的預(yù)處理中的一部分,在C++標(biāo)準(zhǔn)中有4條規(guī)則來定義替換。

規(guī)則1:實(shí)參替換。

本條規(guī)則描述帶參數(shù)的宏的替換過程。

對于宏定義中的形參,在替換列表中,如果不是作為#或##的操作數(shù),那么將對應(yīng)實(shí)參完全

展開(相當(dāng)于對實(shí)參進(jìn)行求值),然后將替換列表中的形參替換掉.如果是#或##的操作數(shù),

那么不進(jìn)行替換。

規(guī)則2:多次掃描。

在所有的形參替換為實(shí)參后,對結(jié)果進(jìn)行再次掃描,如果發(fā)現(xiàn)還有可替換的宏,則進(jìn)行替換,

否則中止。

規(guī)則3:遞歸替換抑制。

如果在替換列表中發(fā)現(xiàn)當(dāng)前正在展開的宏的名字,那么這里不進(jìn)行替換.更進(jìn)一步,在嵌套

的替換過程中發(fā)現(xiàn)已經(jīng)替換過的宏的名字,則不進(jìn)行替換。

規(guī)則4:遞歸預(yù)處理抑制。

如果替換后的結(jié)果形成預(yù)處理指令,則不執(zhí)行這條預(yù)處理指令。

看幾個C++標(biāo)準(zhǔn)中的例子:

#define x 3

#define f(a) f(x * (a))

#undef x

#define x 2

#define g f

#define z z[0]

#define h g(~

#define m(a) a(w)

#define w 0,1

#define t(a) a

f(y+1) + f(f(z)) % t(t(g)(0) + t)(1);

g(x+(3,4)-w) | h 5) m(f)^m(m);

其結(jié)果分別是

f(2 * (y+1)) + f(2 * (f(2 * (z[0])))) % f(2 * (0)) + t(1);

f(2 * (2+(3,4)-0,1)) | f(2 * ( ~ 5)) f(2 * (0,1))^m(0,1);

對于第一個,主要在于t(t(g)(0) + t)(1)的展開。

容易計算出最外層的t的實(shí)參是f(2 * (0)) + t,而作為t的參數(shù)傳入時其中的t是

正在被展開的宏,所以根據(jù)規(guī)則3,不對這個t進(jìn)行處理,保持不變,得到f(2 * (0)) + t(1)。

對于第二個,h 5)被替換為g(~5),應(yīng)用規(guī)則2,被替換為f(2 * ( ~ 5))。

而m(m)首先被替換為m(w),然后應(yīng)用規(guī)則2再次進(jìn)行替換,但是m已經(jīng)是替換過的了,所以保持

不變,只對w進(jìn)行替換。

#define str(s) # s

#define xstr(s) str(s)

#define debug(s, t) printf("x" # s "= %d, x" # t "= %s", \

x ## s, x ## t)

#define INCFILE(n) vers ## n /* from previous #include example */

#define glue(a, b) a ## b

#define xglue(a, b) glue(a, b)

#define HIGHLOW "hello"

#define LOW LOW ", world"

debug(1, 2);

fputs(str(strncmp("abc\0d", "abc", ’\4’) /* this goes away */

== 0) str(: @\n), s);

#include xstr(INCFILE(2).h)

glue(HIGH, LOW);

xglue(HIGH, LOW)

其結(jié)果分別是

printf("x" "1" "= %d, x" "2" "= %s", x1, x2);

fputs("strncmp(\"abc\\0d\", \"abc\", ’\\4’) = = 0" ": @\n", s);

#include "vers2.h"

"hello";

"hello" ", world"

關(guān)鍵是glue和xglue.

對于glue(HIGH, LOW),首先有一個規(guī)則1的抑制,得到HIGHLOW;的結(jié)果,然后二次掃描,得到

"hello";

對于xglue(HIGH, LOW)沒有抑制效果,所以對參數(shù)求值,分別得到HIGH和LOW ", world",即

glue(HIGH, LOW ", world")。

然后進(jìn)行連接操作得到HIGHLOW ", world",最后再掃描一次得到"hello" ", world"

如果考慮字符串的自然的連接,就可以得到"hello, world"了。

擴(kuò)展資料

宏語言是一類編程語言,其全部或多數(shù)計算是由擴(kuò)展宏完成的。宏語言并未在通用編程中廣泛使用,但在文本處理程序中應(yīng)用普遍。例如, C preprocessor C預(yù)處理器Internet Macros(iOpus) M4(如前所述,源于ATT,捆綁于Unix)

宏定義

c程序提供的預(yù)處理功能之一。包括帶參數(shù)的宏定義和不帶參數(shù)的宏定義。具體是指用一個指定的標(biāo)志符來進(jìn)行簡單的字符串替換或者進(jìn)行闡述替換。形式為:

#define標(biāo)志符[(參數(shù)表)] 字符串

宏名

在上定義中的標(biāo)志符被稱為“宏名”。

宏展開

在c程序編譯時將宏名替換成字符串的過程稱為“宏展開”。

宏語言是一類編程語言,其全部或多數(shù)計算是由擴(kuò)展宏完成的。宏語言并未在通用編程中廣泛使用, 但在文本處理程序中應(yīng)用普遍。例如,

C preprocessorC 預(yù)處理器

Internet Macros(iOpus)

M4(如前所述,源于ATT,捆綁于Unix)

參考資料來源:百度百科-宏

文章標(biāo)題:c語言函數(shù)的怎樣替換 c語言替換語句
鏈接URL:http://jinyejixie.com/article34/dosddpe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)動態(tài)網(wǎng)站、建站公司自適應(yīng)網(wǎng)站、做網(wǎng)站軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計
安福县| 大方县| 馆陶县| 盐亭县| 探索| 宁城县| 柘荣县| 杭州市| 如东县| 扶余县| 恭城| 丘北县| 河东区| 托克逊县| 兴海县| 江安县| 太湖县| 兴义市| 股票| 临泉县| 双江| 罗田县| 西贡区| 松潘县| 营山县| 保定市| 苏尼特右旗| 铜川市| 安塞县| 荔波县| 乡城县| 惠水县| 营山县| 府谷县| 麻江县| 彭山县| 清镇市| 仲巴县| 阿拉尔市| 简阳市| 中宁县|