真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語(yǔ)言函數(shù)筆記博客 c語(yǔ)言函數(shù)基礎(chǔ)知識(shí)

求c語(yǔ)言的詳細(xì)教程

推薦:

創(chuàng)新互聯(lián)主要從事網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)榆樹,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

1.C語(yǔ)言編程寶典

2.C In China

3.百度C語(yǔ)言吧

4.編程中國(guó)

5.C語(yǔ)言之家

6.C語(yǔ)言基地

c語(yǔ)言基地 有名校教師 視頻 教學(xué)

我認(rèn)為要學(xué)好C語(yǔ)言首先必須了解等級(jí)考試C語(yǔ)言的大綱和內(nèi)容,以及各種輔助材料的用途,這是學(xué)好C的基礎(chǔ)。從以前的經(jīng)驗(yàn)以及考網(wǎng)上的一些信息可知,要自學(xué)C語(yǔ)言必須準(zhǔn)備以下資料:

1、 教材:大家現(xiàn)在都公認(rèn)是清華大學(xué)譚浩強(qiáng)主編的那本,當(dāng)然有其他的也可以,如高校出版社的。

2、 習(xí)題集:我認(rèn)為清華大學(xué)的《C語(yǔ)言樣題匯編》不錯(cuò)。書后面附有答案。

3、 上機(jī)練習(xí):我認(rèn)為南開大學(xué)的那個(gè)可以,最好是在考前從頭到尾做一遍。答案可以去考網(wǎng)下載區(qū)下載。

4、 大綱:這個(gè)肯定要的,可以在考網(wǎng)二級(jí)版那里去下,然后打印出來。

5、 自學(xué)計(jì)劃:為了做到有計(jì)劃有目的地學(xué)習(xí)C語(yǔ)言,大家可以根據(jù)自己的學(xué)習(xí)(或工作)情況,制定一個(gè)自學(xué)計(jì)劃,循序漸進(jìn)地學(xué)習(xí)。

6、 模擬盤:為了更好地熟悉考場(chǎng)環(huán)境,下一個(gè)模擬盤是必不可少的,可以在。下載,注意,在下載時(shí)要把鎖匙盤一起下回來,否則不能進(jìn)入考試環(huán)境。

7、 教學(xué)光盤:如果能買到C語(yǔ)言的教學(xué)光盤,那當(dāng)然更好,這樣可以更直觀地學(xué)習(xí)C語(yǔ)言了。

下面從微觀上針對(duì)C語(yǔ)言的幾個(gè)重點(diǎn)和難點(diǎn),逐個(gè)談?wù)劸唧w的自學(xué)方法。

二 如何學(xué)習(xí)C語(yǔ)言的運(yùn)算符和運(yùn)算順序

C語(yǔ)言的運(yùn)算功能十分豐富,運(yùn)算種類遠(yuǎn)多于其它程序設(shè)計(jì)語(yǔ)言。因此,當(dāng)多種不同運(yùn)算組成一個(gè)運(yùn)算表達(dá)式,即一個(gè)運(yùn)算式中出現(xiàn)多種運(yùn)算符時(shí),運(yùn)算的優(yōu)先順序和結(jié)合規(guī)則顯得十分重要。

初學(xué)者往往對(duì)此感到非常困難,覺得C語(yǔ)言學(xué)習(xí)太繁雜,其實(shí)只要我們對(duì)此合理進(jìn)行分類,找出它們與我們?cè)跀?shù)學(xué)中所學(xué)到運(yùn)算之間的不同點(diǎn)之后,記住這些運(yùn)算也就不困難了,有些運(yùn)算符在理解后更會(huì)牢記心中,將來用起來得心應(yīng)手,而有些可暫時(shí)放棄不記,等用到時(shí)再記不遲。

下面是所有的運(yùn)算符按優(yōu)先級(jí)不同分類列表:(對(duì)不起,因?yàn)楸砀耧@示不正常,已被我刪除大家可以看書上的)

表中列出15種優(yōu)先級(jí)的運(yùn)算符,從高到低,優(yōu)先級(jí)為1 ~ 15,最后邊一欄是結(jié)合規(guī)則,除第2、3級(jí)和第14級(jí)為從右至左結(jié)合外,其它都是從左至右結(jié)合,它決定同級(jí)運(yùn)算符的運(yùn)算順序。

下面我們通過幾個(gè)例子來說明:

(1) 3*20/4%10 這個(gè)表達(dá)式中出現(xiàn)3種運(yùn)算符,是同級(jí)運(yùn)算符,運(yùn)算順序按從左至右結(jié)合,因此先計(jì)算3 * 20=60,然后被4除,結(jié)果為15,最后是%(求余數(shù))運(yùn)算,所以表達(dá)式的最終結(jié)果為15%10 = 5

(2)a = 3;b = 5;c =++ a* b ;d =a + +* b;

例子中的“;”是C語(yǔ)言的語(yǔ)句分隔符,執(zhí)行順序?yàn)閺淖蟮接遥?條語(yǔ)句執(zhí)行后a的值為3,第2條語(yǔ)句執(zhí)行后b的值為5,第3條語(yǔ)句中有兩個(gè)運(yùn)算符前置+ +和*,按表中所列順序,+ +先執(zhí)行,*后執(zhí)行,所以+ + a執(zhí)行后,a的值為4,由于+ +為前置運(yùn)算,所以a的值4參與運(yùn)算,C的值為20,最后執(zhí)行第4條語(yǔ)句,由于a + +為后置運(yùn)算,所以a值為4參與運(yùn)算,使得d的值仍為20,而a參與運(yùn)算后其值加1,值為5。

這個(gè)例子執(zhí)行后,a的值為5,b的值為5,c的值為20,d的值也是20。

(3)a = 3,b = 5,b+ = a,c = b* 5

例子中的“,”是逗號(hào)結(jié)合運(yùn)算,上式稱為逗號(hào)表達(dá)式,自左向右結(jié)合,最后一個(gè)表達(dá)式的結(jié)果值就是逗號(hào)表達(dá)式的結(jié)果,所以上面的逗號(hào)表達(dá)式結(jié)果為40,a的值為3,b的值為8,c的值為40。

三、如何學(xué)習(xí)C語(yǔ)言的四種程序結(jié)構(gòu)

(1)順序結(jié)構(gòu)

這種結(jié)構(gòu)的程序比較簡(jiǎn)單,就是按照語(yǔ)句的排列順序依次執(zhí)行的機(jī)制。順序結(jié)構(gòu)的執(zhí)行順序是自上而下,依次執(zhí)行,因此編寫程序也必須遵守這一規(guī)定,否則你的程序執(zhí)行結(jié)果就不對(duì)。

例如;a = 3,b = 5,現(xiàn)交換a,b的值,正確的程序?yàn)椋?/p>

c = a;

a = b;

b = c;

執(zhí)行結(jié)果是a = 5,b = c = 3如果改變其順序,寫成:

a = b;

c = a;

b = c;

則執(zhí)行結(jié)果就變成a = b = c = 5,不能達(dá)到預(yù)期的目的,這是初學(xué)者常犯的錯(cuò)誤。

順序結(jié)構(gòu)可以獨(dú)立使用構(gòu)成一個(gè)簡(jiǎn)單的完整程序,常見的輸入、計(jì)算,輸出三步曲的程序就是順序結(jié)構(gòu),例如計(jì)算圓的面積,其程序的語(yǔ)句順序就是輸入圓的半徑R,計(jì)算S = 3.14159*R*R,輸出圓的面積S。而大多數(shù)情況下順序結(jié)構(gòu)都是作為程序的一部分,與其它結(jié)構(gòu)一起構(gòu)成一個(gè)復(fù)雜的程序,例如分支結(jié)構(gòu)中的塊體、循環(huán)結(jié)構(gòu)中的循環(huán)體等。

C語(yǔ)言自學(xué)方法(2)

(2) 分支結(jié)構(gòu)

分支結(jié)構(gòu)與順序結(jié)構(gòu)不同,其執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴(yán)格按照語(yǔ)句出現(xiàn)的物理順序。分支結(jié)構(gòu)的程序設(shè)計(jì)方法的關(guān)鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)不同的程序流程選擇適當(dāng)?shù)姆种дZ(yǔ)句。

分支結(jié)構(gòu)適合于帶有邏輯條件判斷的計(jì)算,設(shè)計(jì)這類程序時(shí)往往都要先繪制其程序流程圖,然后根據(jù)程序流程寫出源程序,這樣做把程序設(shè)計(jì)分析與語(yǔ)言分開,使得問題簡(jiǎn)單化,易于理解。程序流程圖是根據(jù)解題分析所繪制的程序執(zhí)行流程圖。

學(xué)習(xí)分支結(jié)構(gòu)不要被分支嵌套所迷惑,只要弄清基本的分支結(jié)構(gòu),嵌套結(jié)構(gòu)也就不難了。嵌套只不過是分支塊體中又包括分支語(yǔ)句而已,不是新知識(shí),只要你基礎(chǔ)知識(shí)扎實(shí),分支嵌套也難不住你,下面我們重點(diǎn)討論幾種基本的分支結(jié)構(gòu)的學(xué)習(xí)方法。

①If(條件)

{

}

這種分支結(jié)構(gòu)中的塊可以是一條語(yǔ)句,此時(shí)“{

}”可以省略,也可以是多條語(yǔ)句。它有兩條分支路徑可選,一條是條件為真,執(zhí)行塊,另一條是條件不滿足,跳過塊。

如,計(jì)算x的絕對(duì)值,根據(jù)絕對(duì)值定義,我們知道,當(dāng)x=0時(shí),其絕對(duì)值不變,而x0時(shí)其絕對(duì)值是為x的反號(hào),因此程序段為:if(x0)

x=-x;

②if(條件)

else

這是典型的分支結(jié)構(gòu),如果條件成立,執(zhí)行塊1,否則執(zhí)行塊2,塊1和塊2都有1條或若干條語(yǔ)句構(gòu)成。

如:求ax^2+bx+c=0的根

分析:因?yàn)楫?dāng)b^2-4ac=0時(shí),方程有兩個(gè)實(shí)根,否則(b^2-4ac0)有兩個(gè)共軛復(fù)根。其程序段如下:

d=b*b-4*a*c;

if(d=0)

{x1=(-b+sqrt(d))/2a;

x1=(-b-sqrt(d))/2a;

printf(“x1=%8.4f,x2=%8.4f\n”,x1,x2);

}

else

{r=-b/(2*a);

i =sqrt(-d)/(2*a);

printf(“x1=%8.4f+%8.4fi\n”r, i);

printf(“x2=%8.4f-%8.4fi\n”r,i)

}

③多路分支:其語(yǔ)句格式為:

if(條件1) ;

else if(條件2)

else if(條件3)

……

else if(條件n)

else

④switch語(yǔ)句:

switch

語(yǔ)句也是多分支選擇語(yǔ)句,又稱為多路開關(guān)語(yǔ)句,到底執(zhí)行哪一塊,取決于開關(guān)設(shè)置,也就是表達(dá)式的值與常量表達(dá)式相匹配的那一路,它不同if—else 語(yǔ)句,它的所有分支都是并列的,程序執(zhí)行時(shí),由第一分支開始查找,如果相匹配,執(zhí)行其后的塊,接著執(zhí)行第2分支,第3分支……的塊,直到遇到break語(yǔ)句;如果不匹配,查找下一個(gè)分支是否匹配。

(3)循環(huán)結(jié)構(gòu):

循環(huán)結(jié)構(gòu)可以減少源程序重復(fù)書寫的工作量,用來描述重復(fù)執(zhí)行某段算法的問題,這是程序設(shè)計(jì)中最能發(fā)揮計(jì)算機(jī)特長(zhǎng)的程序結(jié)構(gòu),C語(yǔ)言中提供四種循環(huán),即goto循環(huán)、while循環(huán)、do –while循環(huán)和for循環(huán)。

四種循環(huán)可以用來處理同一問題,一般情況下它們可以互相代替換,但一般不提昌用goto循環(huán),所以下面我們重點(diǎn)講解另外的三種循環(huán)。

常用的三種循環(huán)結(jié)構(gòu)學(xué)習(xí)的重點(diǎn)在于弄清它們相同與不同之處,以便在不同場(chǎng)合下使用,大家好好看一下書中三種循環(huán)的格式和執(zhí)行順序,如何替換使用,如把while循環(huán)的例題,用for語(yǔ)句重新編寫一個(gè)程序,這樣能更好地理解它們的作用。

注意:在while和do—while循環(huán)體內(nèi)和for

循環(huán)中的第3語(yǔ)句中,應(yīng)包含趨于結(jié)束的語(yǔ)句(如I++,I--),否則就可能成了一個(gè)死循環(huán),這也是初學(xué)者的一個(gè)常見錯(cuò)誤。

下面我們來討論下這三種循環(huán)的異同之處:

用while和do—while循環(huán)時(shí),循環(huán)變量的初始化的操作應(yīng)在循環(huán)體之前,而for循環(huán)是在語(yǔ)句1中進(jìn)行的;while

循環(huán)和for循環(huán)都是先判斷表達(dá)式,后執(zhí)行循環(huán)體,而do—while循環(huán)是先執(zhí)行循環(huán)體后判斷表達(dá)式,也就是說do—while的循環(huán)體最少被執(zhí)行一次,而while

循環(huán)和for就不一定了。這三種循環(huán)都可以用break語(yǔ)句跳出循環(huán),用continue語(yǔ)句結(jié)束本次循環(huán),而goto語(yǔ)句與if構(gòu)成的循環(huán),不能用break和

continue語(yǔ)句進(jìn)行控制。

這三種結(jié)構(gòu)并不是彼此孤立的,在循環(huán)中可能出現(xiàn)分支、順序結(jié)構(gòu),分支中也可能出現(xiàn)循環(huán)、順序結(jié)構(gòu)而把循環(huán)、分支看成一個(gè)語(yǔ)句,它又是構(gòu)成順序結(jié)構(gòu)的一個(gè)元素,因此這三種結(jié)構(gòu)相互結(jié)合,就能實(shí)現(xiàn)各種算法,設(shè)計(jì)出解題程序,但若是很大的題目,這樣編出的程序往往很長(zhǎng),重復(fù)結(jié)構(gòu)多,并且可閱讀性差,因此我們常將C程序設(shè)計(jì)成模塊化結(jié)構(gòu)。

(4)模塊化程序結(jié)構(gòu)

C語(yǔ)言的模塊化程序結(jié)構(gòu)用函數(shù)來實(shí)現(xiàn),即將復(fù)雜的C程序分為若干模塊,每個(gè)模塊都編寫成一個(gè)合法的C函數(shù),然后用主函數(shù)調(diào)用函數(shù)及函數(shù)調(diào)用函數(shù)實(shí)現(xiàn)一大C程序:C程序=主函(main)+若干個(gè)函數(shù)。

在程序設(shè)計(jì)中,常將一些常用的功能模塊寫成函數(shù),也可以將大程序段分割成若干函數(shù),前者目的在于減少重復(fù)編寫程序段的工作量,后者目的在于縮短模塊長(zhǎng)度,以便程序閱讀方便。

一個(gè)源程序文件由一個(gè)或多個(gè)函數(shù)組成,它是一個(gè)編譯單位,而一個(gè)C程序由一個(gè)或多個(gè)源程序文件組成。對(duì)較大的程序,往往分成多個(gè)文件,這樣可以分別編寫、分別編譯,提高高調(diào)試效率,一個(gè)源程序文件可以被多個(gè)C程序公用。

C程序的的執(zhí)行是從main()函數(shù)開始,調(diào)用其它函數(shù)后流程回到main函數(shù),在main中結(jié)束整個(gè)函數(shù)運(yùn)行,main函數(shù)的稱是系統(tǒng)規(guī)定的,用戶可以修改其內(nèi)容即函數(shù)體,但不能修改其名稱和參數(shù),一個(gè)C程序必須有一個(gè)main函數(shù),也只能有一個(gè)main函數(shù)。

所有函數(shù)都是平行的,即在定義函數(shù)時(shí)是互相獨(dú)立的一個(gè)函數(shù)度不從屬于另一個(gè)函數(shù),即函數(shù)不能嵌套定義,但可以互相調(diào)用,但不能調(diào)用main函數(shù)。

函數(shù)分成兩類,即標(biāo)準(zhǔn)函數(shù)和用戶自定義函數(shù),標(biāo)準(zhǔn)函數(shù)又稱庫(kù)函數(shù),由系統(tǒng)提供,用戶可直接調(diào)用,C語(yǔ)言提供了豐富的庫(kù)函數(shù),請(qǐng)考生在編寫C程序時(shí)查閱教材后的函數(shù)說明,這可節(jié)省你的編程工作量;用戶自定義函數(shù)由編程者自己編寫.

回答者:阿拉蕾啊呀 - 試用期 一級(jí) 7-23 11:13

提問者對(duì)于答案的評(píng)價(jià):

太好了,非常感謝!

評(píng)價(jià)已經(jīng)被關(guān)閉 目前有 1 個(gè)人評(píng)價(jià)

100% (1) 不好

0% (0)

對(duì)最佳答案的評(píng)論

19798802 C語(yǔ)言新手群快加入吧!?。。。。?

評(píng)論者: 549045259 - 見習(xí)魔法師 二級(jí)

浮躁的人容易問:我到底該學(xué)什么;----別問,學(xué)就對(duì)了;浮躁的人容易說:我要中文版!我英文不行!----不行?學(xué)呀!浮躁的人分兩種:只觀望而不學(xué)的人;只學(xué)而不堅(jiān)持的人;浮躁的人永遠(yuǎn)不是一個(gè)高手。

評(píng)論者: hnytgl - 試用期 一級(jí)

其他回答共 4 條

1.讀代碼!

2.改代碼!

3.寫代碼!

回答者:liuding1213 - 見習(xí)魔法師 二級(jí) 7-18 21:10

找一本經(jīng)典教材,例如譚浩強(qiáng)的《C語(yǔ)言陳序設(shè)計(jì)》。

找一本習(xí)題集,要有全部詳細(xì)解釋的那種,最好有實(shí)例的代碼答案。

花一個(gè)月把課本看完,務(wù)求理解。不理解的地方也不要死摳,做上標(biāo)記等以后再解決。然后開始做題,不要因?yàn)轭}目簡(jiǎn)單就放過,往往簡(jiǎn)單背后蘊(yùn)藏大的發(fā)現(xiàn)。也可以快速看完書,然后復(fù)習(xí),每復(fù)習(xí)完一章后把習(xí)題集上的題目好好做一遍。

做題時(shí)最好在計(jì)算機(jī)上把不明白的地方親自實(shí)踐一下,然后在筆記本上寫下自己的感想和心得。考試前翻一翻筆記即可。

千里之行始于足下,行動(dòng)吧!

(OC 初級(jí)筆記)OC 常用數(shù)學(xué)函數(shù)(C語(yǔ)言)

1.算數(shù)函數(shù)

1.1產(chǎn)生隨機(jī)數(shù)

rand()

1.2取絕對(duì)值

fabs()

1.3取復(fù)數(shù)的絕對(duì)值

cabs(struct complex i)

1.4浮點(diǎn)數(shù)的絕對(duì)值

fabs()/fabsf()/fabsl()

1.5取余

fmod(double, double)

1.6向上取整

ceil()/ceilf()/ceill()

1.7向下取整

floor()/floorf()/floorl()

1.8求最大值

fmax()/fmaxf()/fmaxl()

1.9求最小值

fmin()/fminf()/fminl()

1.10四舍五入

round()/roundf()/roundl()

2.指數(shù)與對(duì)數(shù)

2.1求 n 的 m 次方的值

pow(n, m)/powf(n, m)/powl(n, m)

2.2求 e 的 x 次方

exp(x)/expf(x)/expl(x)

2.3以 e 為底的對(duì)數(shù)值

log()/logf()/logl()

2.4以10為底的對(duì)數(shù)

log10()/log10f()/log10l()

2.5開平方(根號(hào))

sqrt()

3.三角函數(shù)

3.1正弦值

sin()/sinf()/sinl()

3.2余弦值

cons()/cosf()/cosl()

3.3正切值

tan()/tanf()/tanl()

3.4雙曲線正弦值

sinh()/sinhf()/sinhl()

3.5雙曲線余弦值

cosh()/coshf()/coshl()

3.4雙曲線正切值

tanh()/tanhf()/tanhl()

4.反三角函數(shù)

4.1反正弦值

asin()/asinf()/asinl()

4.2反余弦值

acos()/acosf()/acosl()

4.3反正切值

atan()/atanf()/atanl()

4.4反雙曲線正弦值

asinh()/asinhf()/asinhl()

4.5反雙曲線余弦值

acosh()/acoshf()/acoshl()

4.6反雙曲線正切值

atanh()/atanhf()/atanhl()

一個(gè)字符串沒有字節(jié)怎么表示

?

Jimmy1224 ?

碼齡11年

關(guān)注

字符串是一種重要的數(shù)據(jù)類型,但是C語(yǔ)言并沒有顯式的字符串?dāng)?shù)據(jù)類型,因?yàn)樽址宰址A康男问匠霈F(xiàn)或者存儲(chǔ)于字符數(shù)組中。字符串常量適用于那些程序不會(huì)對(duì)它們進(jìn)行修改的字符串。所有其他字符串都必須存儲(chǔ)于字符數(shù)組或動(dòng)態(tài)分配的內(nèi)存中。本文描述處理字符串和字符的庫(kù)函數(shù),以及一些相關(guān)的,具有類似能力的,既可以處理字符串也可以處理非字符串?dāng)?shù)據(jù)的函數(shù)。

1.1 字符串基礎(chǔ)

字符串是一串零個(gè)或多個(gè)字符,并且以一個(gè)位模式全0的NUL字節(jié)('\0')結(jié)尾。NUL字節(jié)是字符串的終止符,但它本身并不是字符串的一部分,所以字符串長(zhǎng)度并不包括NUL字節(jié)。

頭文件string.h包含了字符串函數(shù)所需的圓形和聲明。在程序中包含這個(gè)頭文件確實(shí)是個(gè)好主意,因?yàn)橛辛怂脑?,編譯器可以更好地為程序執(zhí)行錯(cuò)誤檢查。

1.2字符串長(zhǎng)度

字符串的長(zhǎng)度是它所包含的字符個(gè)數(shù),不包含NUL字節(jié)。我們很容易對(duì)字符進(jìn)行計(jì)數(shù)來計(jì)算字符串的長(zhǎng)度。需要說明的是,如果strlen函數(shù)的參數(shù)不是一個(gè)以NUL字節(jié)結(jié)尾的字符序列,它將繼續(xù)進(jìn)行查找,直到發(fā)現(xiàn)一個(gè)NUL字節(jié)為止,這樣strlen函數(shù)的返回值將是不確定數(shù)!

庫(kù)函數(shù)strlen的源碼如下:

size_t strlen(char const * string)

{

int length;

for (length = 0; *string++ != '\0'; ;)

{

length += 1;

}

return length;

}

注意:

strlen返回一個(gè)類型為size_t的值,它是一個(gè)無符號(hào)整數(shù)類型。在表達(dá)式中使用無符號(hào)可能導(dǎo)致不可預(yù)料的結(jié)果。

例如:

if ( strlen(x) = strlen(y) )

{

...

}

if (strlen(x) - strlen(y) = 0)

{

...

}

上面兩個(gè)表達(dá)式看似相等,但事實(shí)上它們是不想等的。第一條語(yǔ)句是我們所預(yù)想的那樣工作,但第2條語(yǔ)句的結(jié)果永遠(yuǎn)為真。因?yàn)閟trlen的結(jié)果是無符號(hào),所以strlen(x)-strlen(y)的結(jié)果也是個(gè)無符號(hào)數(shù),而無符號(hào)數(shù)都是大于等于“0”的。在表達(dá)式中如果同時(shí)包含了無符號(hào)和有符號(hào)數(shù)同樣會(huì)產(chǎn)生奇怪的結(jié)果。

1.3 不受限制的字符串函數(shù)

最常用的字符串函數(shù)都是“不受限制”的,就是說它們只是通過尋找字符串參數(shù)結(jié)尾的NUL字節(jié)來判斷它們的長(zhǎng)度。這些函數(shù)一般都指定一塊內(nèi)存用于存放結(jié)果字符串。在使用這些函數(shù)時(shí),程序員必須保證結(jié)果字符串不會(huì)溢出這塊內(nèi)存。

1.3.1 復(fù)制字符串

用于復(fù)制字符串的函數(shù)是strcpy,它的原型如下:

char *strcpy( char *dst, char const *src);

這個(gè)函數(shù)把參數(shù)src字符串復(fù)制到dst參數(shù)。如果參數(shù)src和dst在內(nèi)存中出現(xiàn)重疊,其結(jié)果是未定義的。由于dst參數(shù)將進(jìn)行修改,所以它必須是個(gè)字符數(shù)組或者是一個(gè)指向動(dòng)態(tài)分配內(nèi)存的數(shù)組指針,不能使用字符串常量。

目標(biāo)參數(shù)以前的內(nèi)容將被覆蓋丟失。即使新的字符串比dst原先的內(nèi)存更短,由于新的字符串是以NUL字節(jié)結(jié)尾,所以老字符串最后剩余的幾個(gè)字符也會(huì)被有效地刪除。需要注意的是字符結(jié)束標(biāo)志也將被復(fù)制。

例如:

char message[] = "message";

...

if (...)

{

strcpy( message, "Dif");

}

如果條件為真并且復(fù)制順利執(zhí)行,數(shù)組將包含下面的內(nèi)容:

?

第一個(gè)NUL字節(jié)后面的幾個(gè)字符再也無法被字符串函數(shù)訪問,因此從任何角度實(shí)現(xiàn)看,它們都已經(jīng)是丟失的了。

注意:

程序員必須保證目標(biāo)字符數(shù)組的空間足以容納需要復(fù)制的字符串。如果字符串比數(shù)組長(zhǎng),多余的字符仍被復(fù)制,它們將覆蓋原先存儲(chǔ)于數(shù)組后面的內(nèi)存空間的值。strcpy無法解決這個(gè)問題,因?yàn)樗鼰o法判斷目標(biāo)字符數(shù)組的長(zhǎng)度。

1.3.2 連接字符串

strcat函數(shù)可以實(shí)現(xiàn)一個(gè)字符串添加到另一個(gè)字符串的后面。函數(shù)原型如下:

char *strcat( char *dst, char const *src);

strcat函數(shù)要求dst參數(shù)原先已經(jīng)包含一個(gè)字符串(可以是空字符串)。它找到這個(gè)字符串的末尾,并把src字符串的一份拷貝添加到這個(gè)位置。如果src和dst的位置發(fā)生重疊,其結(jié)果是未定義的。

下面是這個(gè)函數(shù)的常見用法:

strcpy( message, "hello");

strcpy( message, customer_name);

注意:程序員必須保證目標(biāo)字符數(shù)組剩余的空間足以保存整個(gè)src源字符串。

1.3.3 字符串比較

庫(kù)函數(shù)strcmp的原型如下:

int strcmp( char const *s1, char const *s2);

字符串比較的規(guī)則:

對(duì)兩個(gè)字符串自左向右逐個(gè)字符比較(按ASCII碼值大小比較),直到出現(xiàn)不同的字符或遇到‘\0’為止,如果全部相同則認(rèn)為相等。

1. s1小于s2,函數(shù)返回負(fù)整數(shù);

2. s1大于s2,函數(shù)返回正整數(shù);

3. s1等于s2,函數(shù)返回0;

注意:比較兩個(gè)字符串更好的方法是把返回值與零進(jìn)行比較。

if ( 0 == strcmp(str1,str2))

{

...

}

注意:

由于strcmp并不修改它的任一個(gè)參數(shù),所以不存在溢出字符數(shù)組的危險(xiǎn)。strcmp函數(shù)的字符串參數(shù)也必須以一個(gè)NUL字節(jié)結(jié)尾。如果不是,strcmp就可能對(duì)參數(shù)后面的字節(jié)進(jìn)行比較,這個(gè)比較結(jié)果無意義!

1.4 長(zhǎng)度受限的字符串函數(shù)

標(biāo)準(zhǔn)庫(kù)函數(shù)還包含了一些函數(shù),這些函數(shù)接受一個(gè)顯式的長(zhǎng)度參數(shù),用于限定進(jìn)行復(fù)制或比較的字符數(shù)。這些函數(shù)提供了一種方便的機(jī)制,可以防止難以預(yù)料的長(zhǎng)字符串從它們的目標(biāo)數(shù)組溢出。

這些函數(shù)的原型如下所示,和不受限制版本一樣,如果源參數(shù)和目標(biāo)參數(shù)發(fā)生重疊,strncpy和strncat的結(jié)果都是未定義。

char *strncpy(char *dst, char const *src, size_t len );

char *strncat(char *dst, char const *src, size_t len );

char *strncmp(char const *s1, char const *s2, size_t len );

1.4.1 strncpy

和strcpy一樣,strncpy把源字符串的字符復(fù)制到目標(biāo)數(shù)組。但它總是向dsr寫入len個(gè)字符。如果strlen(src)的值小于len,dst數(shù)組就用額外的NUL字節(jié)填充到len長(zhǎng)度。如果strlen(src)的值大于或等于len,那么只有l(wèi)en個(gè)字符被復(fù)制到dst中。此時(shí),它的結(jié)果將可能不會(huì)以NUL字節(jié)結(jié)尾。

例如:

char dst[10];

char src[] = "abcdefghijklmn";

strncpy(dst, src,5);

//dst字符數(shù)組不是以NUL結(jié)尾,len是23,是個(gè)隨機(jī)數(shù)

int len = strlen(dst);

警告:

strncpy調(diào)用的結(jié)果可能不是一個(gè)字符串,因此字符串必須是以NUL字節(jié)結(jié)尾。如果在一個(gè)需要字符串的地方(例如:strlen函數(shù)參數(shù))使用了沒有以NUL字節(jié)結(jié)尾的字符序列,會(huì)發(fā)生什么情況呢?strlen函數(shù)不知道NUL字節(jié)是沒有的,所以它將繼續(xù)一個(gè)字符一個(gè)字符的查找,知道發(fā)現(xiàn)NUL字節(jié)為止?;蛘呷绻瘮?shù)試圖訪問系統(tǒng)分配給這個(gè)程序以外的內(nèi)存范圍,程序就會(huì)崩潰。

這個(gè)問題只有當(dāng)你使用strncpy函數(shù)創(chuàng)建字符串,然后或者對(duì)它們使用str開頭的庫(kù)函數(shù),或者在printf中使用%s格式打印它們時(shí)才會(huì)發(fā)生。考慮如下代碼:

char buffer[BSIZE];

...

strncpy(buffer,name,BSIZE);

buffer[BSIZE-1] = '\0';

如果strlen(name)小于BSIZE,之后的賦值語(yǔ)句不起作用。但是,name長(zhǎng)度很長(zhǎng),這條賦值語(yǔ)句可以保證buffer中的字符串是以NUL字節(jié)結(jié)尾。以后對(duì)這個(gè)數(shù)組使用strlen等其它函數(shù)就會(huì)正常工作。

1.4.2 strncat

strncat也是一個(gè)長(zhǎng)度受限的函數(shù),但它和strncpy不同,strncat從src中最多復(fù)制len個(gè)字符到目標(biāo)數(shù)組的后面。并且,strncat總是在結(jié)果字符串后面添加一個(gè)NUL字節(jié)。它不管目標(biāo)參數(shù)除去原先存在的字符串之后留下的空間夠不夠。

1.4.3 strncmp

strncmp用于比較兩個(gè)字符串,但它最多比較len個(gè)字節(jié)。如果兩個(gè)字符串在第len個(gè)字符之前存在不等的字符,這個(gè)函數(shù)停止比較,返回結(jié)果。如果兩個(gè)字符串的前l(fā)en個(gè)字符相等,函數(shù)就返回零。

1.5 字符串查找基礎(chǔ)

標(biāo)準(zhǔn)庫(kù)中存在許多函數(shù),它們用各種不同的方法查找字符串。

1.5.1 查找一個(gè)字符

在一個(gè)字符串中查找一個(gè)特定字符最容易的方法是使用strchr和strchr函數(shù),它們的原型如下:

char *strchr( char const *str, int ch);

char *strrchr( char const *str, int ch);

它們的第二個(gè)參數(shù)是一個(gè)整型值。但是,它包含了一個(gè)字符值(ASCII)。strchr在字符串中str查找字符ch第1次出現(xiàn)的位置,找到后函數(shù)返回一個(gè)指向該位置的指針。如果該字符并不存在于字符串中,函數(shù)就返回一個(gè)NUL指針。

strrchr的功能與strchr基本一致,只是它所返回的是一個(gè)指向字符串中該字符最后一次出現(xiàn)的位置(r:最右邊)。

例如:

char src[] = "abc12def12";

printf("the first = %s\n",strchr(src,49));//strchr(src,'1')

1.5.2 查找任何幾個(gè)字符

strprk是個(gè)更為常見的函數(shù),它是查找任何一組字符第一次在字符串中出現(xiàn)的位置,它的原型如下:

char *strpbrk( char const *str, char const *group);

這個(gè)函數(shù)返回一個(gè)指向str中第1個(gè)匹配group中任何一個(gè)字符的字符位置。如果未找到函數(shù)返回一個(gè)NULL指針。

例如:

char src[] = "123qaz!@#";

char group[] = "aq!";

printf("location = %s\n",strpbrk(src,group));//qaz!@#,group中的字符第1次出現(xiàn)的位置是q

1.5.3 查找一個(gè)子串

為了在字符串中查找一個(gè)子串,我們可以使用strstr函數(shù),它的原型如下:

char *strstr( char const *s1, char const *s2 );

這個(gè)函數(shù)在s1中查找整個(gè)s2第1次出現(xiàn)的位置,并返回一個(gè)指向該位置的指針。如果s2沒有完整的出現(xiàn)在s1中任何地方,函數(shù)返回NULL指針。如果s2是一個(gè)空字符串,函數(shù)就返回s2。

1.6 高級(jí)字符串查找

1.6.1 查找一個(gè)字符串前綴

strspn和strcspn函數(shù)用于在字符串的起始位置對(duì)字符計(jì)數(shù)。它們的函數(shù)原型如下:

size_t strspn( char const *str, char const *group );

size_t strcspn( char const *str, char const *group );

1.6.2 查找標(biāo)記

一個(gè)字符串常常包含幾個(gè)單獨(dú)的部分,它們彼此分隔開來。每次為了處理這些部分,你首先必須把它們從字符串中抽取出來。這個(gè)任務(wù)正是strtok函數(shù)所實(shí)現(xiàn)的功能。它從字符串中隔離各個(gè)單獨(dú)的稱為標(biāo)記(token)的部分,并丟棄分割符。它的原型如下:

char *strtok( char *str, char const *sep);

sep參數(shù)是個(gè)字符串,定義了用作分隔符的字符集。str指定一個(gè)字符串,它包含零個(gè)或多個(gè)有sep字符串中一個(gè)或多個(gè)分隔符分隔的標(biāo)記。strtok找到str的下一個(gè)標(biāo)記,并將其用NUL結(jié)尾,然后返回一個(gè)指向這個(gè)標(biāo)記的指針。

高級(jí)字符串查找將另外詳解描述!

1.7 字符操作

標(biāo)準(zhǔn)庫(kù)包含了兩組函數(shù),用于操作單獨(dú)的字符,它們的原型位于頭文件ctype.h。第一組函數(shù)用于字符分類,第二組函數(shù)用于轉(zhuǎn)換字符。

1.7.1 字符分類

每個(gè)分類函數(shù)接受一個(gè)包含字符值的整型參數(shù)。函數(shù)測(cè)試這個(gè)字符并返回一個(gè)整型值,表示真或假。

int isalnum( int ch );

int iscntrl( int ch );

int islower( int ch );

int isprint( int ch );

int isupper( int ch );

int isspace( int ch );

1.7.2 字符轉(zhuǎn)換

轉(zhuǎn)換函數(shù)把大寫字母轉(zhuǎn)換為小寫字母或把小寫字母轉(zhuǎn)換為大寫字母。它們的函數(shù)原型如下:

int tolower( int ch );

int toupper( int ch );

toupper函數(shù)返回其參數(shù)的對(duì)應(yīng)大寫形式,tolower函數(shù)返回其參數(shù)的對(duì)應(yīng)的小寫形式。如果函數(shù)參數(shù)并不是處于一個(gè)適當(dāng)?shù)拇笮懙淖址?,函?shù)將不修改直接返回。

提示:

直接測(cè)試或操縱字符將會(huì)降低程序的可移植性。例如,考慮下面這條語(yǔ)句,它試圖測(cè)試ch是否是一個(gè)大寫字符。

if( ch = 'A' ch = 'z' )

這條語(yǔ)句在使用ASCII字符集的機(jī)器上能夠運(yùn)行,但是在使用EBCDIC字符集的機(jī)器上將會(huì)失敗。另一方面,下面這條語(yǔ)句

if ( isupper( ch ) )

無論機(jī)器使用哪個(gè)字符集,它都能順利進(jìn)行,因此字符分類和轉(zhuǎn)換函數(shù)可以提高函數(shù)的可移植性。

1.8 內(nèi)存操作

在非字符串?dāng)?shù)據(jù)中包含零值的情況并不罕見,此時(shí)無法使用字符串處理函數(shù)來處理這種類型的數(shù)據(jù),因?yàn)楫?dāng)它們遇到第1個(gè)NUL字節(jié)時(shí)就停止工作。我們應(yīng)該使用另外一組相關(guān)的函數(shù),它們的操作與字符串函數(shù)類似,但這些函數(shù)能夠處理任意的字符序列。下面是它們的原型:

void *memcpy( void *dst, void const *src, size_t length );

void *memmvoe( void *dst, void const *src, size_t length );

void *memcmp( void const *a, void const *b, size_t length);

void *memchr( void const *a, int ch, size_t length);

void *memset( void *a, int ch, size_t length);

每個(gè)原型都包含一個(gè)顯示的參數(shù)說明需要處理的字節(jié)數(shù),它們?cè)谟龅絅UL字節(jié)時(shí)并不會(huì)停止工作。

1.8.1 memcpy

void *memcpy( void *dst, void const *src, size_t length );

memcpy從src的起始位置復(fù)制length個(gè)字節(jié)到dst的內(nèi)存起始位置,我們可以使用這種方法復(fù)制任何類型的值。第3個(gè)參數(shù)length指定了復(fù)制值的長(zhǎng)度(以字節(jié)計(jì))。如果src和dst以任何形式出現(xiàn)重疊,其結(jié)果都是未定義的。

例如:

char temp[SIZE],value[SIZE];

...

memcpy( temp, value, SIZE);//從數(shù)組value復(fù)制SIZE個(gè)字節(jié)到temp

如果兩個(gè)數(shù)組為整型數(shù)組該怎么辦?下面語(yǔ)句完成可以完成這項(xiàng)任務(wù):

memcpy( temp, value, sizeof(value) );

memcpy()前兩個(gè)參數(shù)類型是void*型指針,而任何類型的指針都可以轉(zhuǎn)化為void*型指針。

1.8.2 memmove

void *memmvoe( void *dst, void const *src, size_t length );

memmove函數(shù)的行為和memcpy差不多,只是它的源和目標(biāo)操作數(shù)可以重疊。它的內(nèi)部實(shí)現(xiàn)過程:把源操作數(shù)復(fù)制到一個(gè)臨時(shí)位置,這個(gè)臨時(shí)的位置不會(huì)與源或目標(biāo)操作數(shù)重疊,然后再把它從這個(gè)臨時(shí)位置復(fù)制到目標(biāo)操作數(shù)。如果源和目標(biāo)參數(shù)真的可能存在重疊,就應(yīng)該使用memmove,如下所示:

//Shift the values int the x array left one position.

memmove( x, x+1, ( count-1 ) * sizeof(x[0]) );

1.8.3 memcmp

void *memcmp( void const *a, void const *b, size_t length);

memcmp對(duì)兩段內(nèi)存的內(nèi)容進(jìn)行比較,這兩段內(nèi)存分別起始于a和b,共比較length個(gè)字節(jié)。這些值按照無符號(hào)字符逐字進(jìn)行比較,函數(shù)的返回值與strcmp函數(shù)一樣。由于這些值是根據(jù)一串無符號(hào)字節(jié)進(jìn)行比較的,所以memcmp函數(shù)用于比較不是單字節(jié)的數(shù)據(jù)如整數(shù)或浮點(diǎn)數(shù)時(shí)可能出現(xiàn)不可預(yù)料的結(jié)果。

1.8.4 memchr

void *memchr( void const *a, int ch, size_t length);

memchr從a的起始位置開始查找字符ch第一次出現(xiàn)的位置,并返回一個(gè)指向該位置的指針,它共查找length個(gè)字節(jié)。如果在length個(gè)字節(jié)中未找到該字符,函數(shù)就返回NULL指針。

1.8.5 memset

void *memset( void *a, int ch, size_t length);

memset函數(shù)把從a開始的length字節(jié)都設(shè)置為字符值ch。例如:

memset( buffer, 0, SIZE);//把buffer前SIZE個(gè)字節(jié)都初始化為‘\0’

文章知識(shí)點(diǎn)與官方知識(shí)檔案匹配

C技能樹字符串字符串輸入與輸出

106612 人正在系統(tǒng)學(xué)習(xí)中

打開CSDN,閱讀體驗(yàn)更佳

字符串、字符和字節(jié)

三者關(guān)系: 字符串是由一個(gè)個(gè)字符組成的,每個(gè)字符又由一個(gè)或多個(gè)字節(jié)來表示,每個(gè)字節(jié)又由8個(gè)bit位來表示。 字符:計(jì)算機(jī)中使用的文字和符號(hào),比如1、2、A、B、%等等。 字節(jié)(Byte):一種計(jì)量單位,表示數(shù)據(jù)量多少,它是計(jì)算機(jī)信息技術(shù)用于計(jì)量存儲(chǔ)容量的一種計(jì)量單位。 不同編碼里,字符和字節(jié)的對(duì)應(yīng)關(guān)系不同: ①ASCII碼中,一個(gè)英文字母占一個(gè)字節(jié)的空間,一個(gè)中文漢字占兩個(gè)字節(jié)的空間。 ②UTF-8編碼中,一個(gè)英文字符等于一個(gè)字節(jié),一個(gè)中文等于三個(gè)字節(jié)。 ③Unicode編碼中,一個(gè)英文等于兩個(gè)字節(jié),一個(gè)中

繼續(xù)訪問

字符與字符串(新手,c語(yǔ)言)

字符與字符串,新手詳細(xì)筆記,c語(yǔ)言

繼續(xù)訪問

?

最新發(fā)布 字符串(字節(jié))長(zhǎng)度計(jì)算

一般英文占一個(gè)長(zhǎng)度,漢字占兩個(gè)長(zhǎng)度(字節(jié)),獲取中英混合的字符串長(zhǎng)度。

繼續(xù)訪問

熱門推薦 字節(jié),字符及占用內(nèi)存大小情況

(一)“字節(jié)”的定義 字節(jié)(Byte)是一種計(jì)量單位,表示數(shù)據(jù)量多少,它是計(jì)算機(jī)信息技術(shù)用于計(jì)量存儲(chǔ)容量的一種計(jì)量單位。 (二)“字符”的定義 字符是指計(jì)算機(jī)中使用的文字和符號(hào),比如1、2、3、A、B、C、~!·#¥%……—*()——+、等等。 (三)“字節(jié)”與“字符” 它們完全不是一個(gè)位面的概念,所以兩者之間沒有“區(qū)別”這個(gè)說法。不同編碼里,字符和字節(jié)的對(duì)應(yīng)關(guān)系不同:

繼續(xù)訪問

c語(yǔ)言字符串長(zhǎng)度,占用字節(jié)大小,存放位置等問題

參考文章: 1、三者長(zhǎng)度strlen問題 int main () { char *str="xiaolong"; printf("%d\n",strlen(str)); return 0; } 結(jié)果: #include stdio.h #include string.h int main ...

繼續(xù)訪問

Linux 中與字符串相關(guān)的函數(shù)strpbrk、strcasecmp、strspn(不間斷更新)

本篇博客旨在整理出所有Linux網(wǎng)絡(luò)編程中常用的字符串相關(guān)的函數(shù),這些函數(shù)普遍用在處理網(wǎng)絡(luò)通信中的字符串?dāng)?shù)據(jù)。話不多說,直接進(jìn)入正題。 1、strpbrk函數(shù) #includestring.h char* strpbrk(char* s1, char* s2); strpbrk()從第一個(gè)字符指針指向的位置 向后檢查每個(gè)字符,直到遇到\0(不檢查\0),如果檢查到的某個(gè)字符在s2指向的字符串中,那么返回他的地址,并停止檢查。 如果s1 、s2沒有相同字符,返回NULL。 注:傳入strpb

繼續(xù)訪問

Linux下對(duì)字符串處理的實(shí)現(xiàn)函數(shù)(一)

1.Linux下字符串大小寫轉(zhuǎn)換 2.Linux下刪除字符串中對(duì)應(yīng)標(biāo)志字符串的首字符串 3.Linux下刪除字符串中不需要的空格(示例:逗號(hào)前后) 5.Linux下處理字符串——忽略雙引號(hào)內(nèi)容 6.Linux下字符串分割——忽略雙引號(hào)內(nèi)容.........

繼續(xù)訪問

?

linux 純字符串,Linux下常用的字符串函數(shù)

13. strlen()(返回字符串長(zhǎng)度)相關(guān)函數(shù)表頭文件 #include定義函數(shù) size_t strlen (const char *s);函數(shù)說明 strlen()用來計(jì)算指定的字符串s的長(zhǎng)度,不包括結(jié)束字符"\0"。返回值 返回字符串s的字符數(shù)。范例#includemain(){char *str = "12345678";printf("str length = %d\n"...

繼續(xù)訪問

linux 字符串操作函數(shù)

1 strchr 函數(shù)原型:extern char *strchr(char *str,char character) 參數(shù)說明:str為一個(gè)字符串的指針,character為一個(gè)待查找字符。 所在庫(kù)名:#include string.h 函數(shù)功能:從字符串str中尋找字符character第一次出現(xiàn)的位置。 返回說明:返回指向第一次出現(xiàn)字符cha...

繼續(xù)訪問

linux下字符串操作,Linux shell 字符串操作詳解-Fun言

1、Linux shell 截取字符變量的前8位實(shí)現(xiàn)方法有如下幾種:expr substr “$a” 1 8echo $a|awk ‘{print substr(,1,8)}’echo $a|cut -c1-8echo $expr $a : ‘\(.\\).*’echo $a|dd bs=1 count=8 2/dev/null2、按指定的字符串截取(1)第一種方法:從左向右截取最后一個(gè)s...

繼續(xù)訪問

Linux操作字符串

目錄 獲取字符串長(zhǎng)度: 提取子字符串: 子字符串消除 字符串替換 子字符串所在位置 獲取字符串長(zhǎng)度: 從字符串開始的地方匹配子字符串的長(zhǎng)度: 1.expr match "$string" '$substring' 2.expr "$string" : '$substring 注釋:$substring是一個(gè)正則表達(dá)式 提取子字符串: 1.${string:position} 在string 中從位置$position 開始提取子字符串. 如果$string為"*"或"@",

繼續(xù)訪問

Linux字符串操作

Linux字符串操作 描述 shell內(nèi)置一系列的操作符合,可以對(duì)字符串進(jìn)行操作; 常用操作 表達(dá)式 含義 ${#string} $string的長(zhǎng)度 ${string:position} 在string中從位置position開始提取子串 ${string:position:length} 在string中從位置position開始提取長(zhǎng)度為$length的子串 ${string#substring} 從變量string的開頭刪除最短匹配substring的子串 ${s

繼續(xù)訪問

linux 字符串比較、數(shù)值比較

字符串相等: [[ $str1 == $str2 ]] 字符串不相等: [[ $str1 != $str2 ]] 字符串大小比較: [[ $str1 $str2 ]] 字符串等于空: [[ -z $str2 ]] 字符串不等于空: [[ -n $str2 ]] 二元比較操作符,比較變量或者比較數(shù)字.注意數(shù)字與字符串的區(qū)別. 整數(shù)比較 -eq 等于,如:if [ "$a" -eq "$b" ] -ne

繼續(xù)訪問

Linux下常用的字符串函數(shù)合集分享

轉(zhuǎn)自:Linux下常用的字符串函數(shù)一、字符間的轉(zhuǎn)換1 tolower(將大寫字母轉(zhuǎn)換成小寫字母)相關(guān)函數(shù)isalpha,toupper表頭文件 include定義函數(shù)int tolower(int c);函數(shù)說明。。。 ...

繼續(xù)訪問

字符串(Linux應(yīng)用編程篇)

關(guān)于字符串的相關(guān)操作有 輸入、輸出、合并、修改、比較、轉(zhuǎn)換、復(fù)制、搜索等等 一、字符串I/O 宏定義文件指針:標(biāo)準(zhǔn)輸入設(shè)備stdin、標(biāo)準(zhǔn)輸出設(shè)備stdout、標(biāo)準(zhǔn)錯(cuò)誤設(shè)備stderr 字符串輸出 putchar()、puts()、fputc()、fputs()這些函數(shù)也是標(biāo)準(zhǔn) I/O 函數(shù),標(biāo)準(zhǔn)C庫(kù)函數(shù),且應(yīng)層的函數(shù)是有緩沖的,性能和效率要比系統(tǒng)調(diào)用要高。 /* @ puts函數(shù) @ 頭文件:#include stdio.h @ s:需要進(jìn)行輸出的字符串 @ 返回值:成功返回一

繼續(xù)訪問

Linux下的基本C編程的三類高頻函數(shù)操作第二類——字符串操作函數(shù)(str)

一,strlen和sizeof strlen一般用來求字符串長(zhǎng)度,而sizeof是求這一段儲(chǔ)存空間的大小。它們的區(qū)別在于strlen不計(jì)算空白符的大小,且遇到\0就會(huì)停止工作。 例如 #include stdio.h #include string.h int main(int argc, char **argv) { printf("%ld\n",strlen("hello baby"));//結(jié)果為10; printf("%ld

繼續(xù)訪問

?

linux shell 函數(shù)返回字符串,如何從Bash函數(shù)返回字符串值

您可以讓函數(shù)將變量作為第一個(gè)arg,然后使用要返回的字符串修改變量。#!/bin/bashset -xfunction pass_back_a_string() {eval "$1='foo bar rab oof'"}return_var=''pass_back_a_string return_varecho $return_var打印“ foo bar rab oof”。編輯:在適當(dāng)?shù)奈恢锰砑?..

繼續(xù)訪問

字符串長(zhǎng)度與字節(jié)個(gè)數(shù)

在純ASCII碼下,字節(jié)數(shù)=字符串長(zhǎng)度=字符個(gè)數(shù),因?yàn)槊總€(gè)字符就一個(gè)字節(jié)。 在Unicode下,字節(jié)數(shù)/2=字符串長(zhǎng)度=字符個(gè)數(shù),因?yàn)槊總€(gè)字符都是2個(gè)字節(jié)。 在ASCII碼與其它雙字節(jié)字符系統(tǒng)混用時(shí),字節(jié)數(shù)=ASCII碼字符個(gè)數(shù)+雙字節(jié)字符個(gè)數(shù)*2,而此時(shí)字符串長(zhǎng)度到底怎么統(tǒng)計(jì)就不好說了,有的語(yǔ)言如C語(yǔ)言,此時(shí)字符串長(zhǎng)度=字節(jié)數(shù),有的語(yǔ)言如JS,此時(shí)字符產(chǎn)長(zhǎng)度=字符個(gè)數(shù)。

繼續(xù)訪問

Linux 常用C函數(shù)(內(nèi)存及字符串操作篇2)

Linux 常用C函數(shù)(內(nèi)存及字符串操作篇2)2007-03-22 11:36 strcat(連接兩字符串)

繼續(xù)訪問

c

c++

字符串處理

?寫評(píng)論

?

評(píng)論

?

1


網(wǎng)頁(yè)標(biāo)題:c語(yǔ)言函數(shù)筆記博客 c語(yǔ)言函數(shù)基礎(chǔ)知識(shí)
當(dāng)前地址:http://weahome.cn/article/ddcsgeh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部