溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

C語(yǔ)言之字符串

發(fā)布時(shí)間:2020-07-02 22:09:17 來(lái)源:網(wǎng)絡(luò) 閱讀:175 作者:師趣妮 欄目:編程語(yǔ)言
/*
字符串?:?有序的字符序列.本質(zhì)?:?字符數(shù)組,不同的是,創(chuàng)建字符串時(shí),系統(tǒng)默認(rèn)在字符串末尾添加字符串結(jié)束標(biāo)志"\0",因此字符串在內(nèi)存中的實(shí)際長(zhǎng)度比字符串的長(zhǎng)度多一;
????定義格式?:?char?字符串名稱(chēng)[字符串長(zhǎng)度];????//注:?字符串長(zhǎng)度指的是字符串在內(nèi)存中的實(shí)際長(zhǎng)度;
????初始化?:?1,定義的同時(shí)初始化,如?:?char?string[3]?=?"ab";????//此時(shí)字符串長(zhǎng)度可省略;
?????????????2,定義后,在初始化,如?:?char?string[3];string?=?"ab";????//此時(shí),不在允許一次性賦值,只能夠分別為每一個(gè)位置賦值
?????????????3,通過(guò)數(shù)組定義字符串?:?char?string[3]?=?{'a',?'b',?'\0'};????//當(dāng)然,如果賦值時(shí),元素的長(zhǎng)度小于字符串的定義長(zhǎng)度,此時(shí),"\0"可不寫(xiě),
????????????????????????????????????????????????????????????????????????????因?yàn)槟J(rèn)空白位置的值就是"0",而"0"就是"\0"的ASCII值;
????字符串的輸入輸出?:
????????輸出?:?printf("string?=?%s",string);????//輸出過(guò)程分析?:字符串的本質(zhì)即為一個(gè)字符數(shù)組,因此作為實(shí)參時(shí),實(shí)際上傳遞給函數(shù)的是字符串在內(nèi)存中的地址,
?????????????????????????????????????????????????????????????????首先,判斷該地址指向的字符是否為"\0",如果是,什么也不輸出,跳出函數(shù);如果不是,輸出該字符,
??????????????????????????????????????????????????????????????????地址加1,繼續(xù)上述判斷,直至遇到"\0";
???????????????puts(string)????//原樣輸出,自動(dòng)換行;
????????輸入?:?scanf("%s",&string)????//?注?:?接收字符串時(shí),默認(rèn)以空白字符結(jié)束,因此無(wú)法接收含有空白字符的字符串;
???????????????gets(string)????//注?:?此函數(shù)可接受含有空白字符的字符串,但該函數(shù)并不安全;
????????計(jì)算字符串長(zhǎng)度?:?include?<string.h>
?????????????????????????size_t?length?=?strlen(string);????//原理?:?從傳入的地址開(kāi)始,逐個(gè)判斷計(jì)數(shù),直至"\0",利用指針可自己實(shí)現(xiàn)該函數(shù);
????????字符串的連接?:?include?<string.h>
???????????????????????strcat(dest,?src)????//將src拼接至dest,由于是直接對(duì)dest進(jìn)行操作,因此要求dest有足夠的長(zhǎng)度接收src;
???????????????????????strncat(dest,?src,?size_t)????//size_t參數(shù)接收拼接至dest的src中字符的個(gè)數(shù),目的在于保證dest的安全,當(dāng)src的長(zhǎng)度大于dest能夠接受的字符
???????????????????????????????????????????????????????串長(zhǎng)度時(shí),有可能會(huì)擠占dest中"\0"的位置,導(dǎo)致字符串無(wú)法正確結(jié)束,而錯(cuò)誤訪問(wèn)其他內(nèi)存空間;
????????字符串拷貝?:?strcpy(dest,?src)
?????????????????????strncpy(dest,?src,?size_t)
????????字符串比較?:?strcmp(dest,?src)????//返回0,則兩個(gè)字符串相等;返回整數(shù),字符串不等,且首次遇到的不等位置的字符的ASCII值大于另一個(gè)字符串對(duì)應(yīng)位置的字符的
????????????????????????????????????????????ASCII值;如果小于0,字符串不等,且首次遇到的不等位置的字符的ASCII值小于另一個(gè)字符串對(duì)應(yīng)位置的字符的ASCII值
????????字符串?dāng)?shù)組?:?本質(zhì)?:?二位數(shù)組;
*/


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI