C語(yǔ)言字符串和字符串函數(shù)

1.

? A)字符串輸入

? 1)gets()函數(shù)讀取整行輸入,直至遇到換行符,然后丟棄換行符,儲(chǔ)存其余字符,并在這些字符的末尾添加一個(gè)空字符使其成為一個(gè)C字符串

? ? 例:

? ? char words[length];

? ? gets(words); //但是如果輸入的字符串長(zhǎng)度大于length,會(huì)導(dǎo)致緩沖區(qū)溢出

? 2)fgets(words,length,stdin<表示從鍵盤輸入>)函數(shù)通過第二個(gè)參數(shù)限制讀入的字符數(shù)來解決溢出問題,如果輸入過多,會(huì)截取length大小的那一段;如果輸入中遇到換行符,會(huì)把它儲(chǔ)存在字符串中

? ? fgets()函數(shù)返回char的指針,如果函數(shù)讀到文件結(jié)尾,他將返回一個(gè)特殊的指針:空指針

? ? fputs(words,stdout)函數(shù)用于顯示輸出,并且不在字符串末尾添加換行符

例:

char words[length];

fgets(words,length,stdin);

fputs(words,stdout);

? 3)gets_s()函數(shù)只從標(biāo)準(zhǔn)輸入中讀取輸入,并在在讀到換行符會(huì)丟棄它而不是存儲(chǔ)它

? 4)s_gets()

? ? 示例代碼:

char * s_gets(char * st,int n)

{

? ? char * ret_val;//最后返回的字符串

int i = 0;

ret_val = fgets(st,n,stdin);

if(ret_val)//即 ret_val!=null

{

? ? while(st[i] != '\n' && st[i] != '\0')

? ? ? i++;

? ? if(st[i] == '\n')

? ? ? st[i] = '\0';//將是換行符的地方變成空字符

? ? else

? ? ? while(getchar() != '\n') //拋棄換行符

? ? ? ? continue;

}

return ret_val;

}

? 5)scanf()函數(shù):更像是“獲取單詞”函數(shù),而不是“獲取字符串”函數(shù)

? B)字符串輸出

? 1)puts()函數(shù)只顯示字符串,而且自動(dòng)在顯示的字符串末尾加上換行符,在遇到空字符時(shí)就停止輸出

? ? 例:puts("hello world.");

? 2)fputs(words,stdout)函數(shù)用于顯示輸出,并且不在字符串末尾添加換行符

例:

char words[length];

fgets(words,length,stdin);

fputs(words,stdout);

? 3)printf()函數(shù)不會(huì)自動(dòng)在每個(gè)字符串末尾加上一個(gè)換行符


2.如果要在字符串內(nèi)部使用雙引號(hào),必須在雙引號(hào)前面加上一個(gè)反斜杠(\)

3.字符串常量屬于靜態(tài)存儲(chǔ)類別,這說明如果在函數(shù)中使用字符串常量,該字符串只會(huì)被儲(chǔ)存一次,在整個(gè)程序的生命期內(nèi)存在,即使

函數(shù)被調(diào)用多次。用雙引號(hào)括起來的內(nèi)容被視為指向該字符串儲(chǔ)存位置的指針。

4.初始化數(shù)組把靜態(tài)存儲(chǔ)區(qū)的字符串拷貝到數(shù)組中,而初始化指針只把字符串的地址拷貝給指針

5.字符串函數(shù)

? 1)strlen()函數(shù)用于統(tǒng)計(jì)字符串的長(zhǎng)度

? 2)strcat()函數(shù)用于拼接字符串

? 3)strncat()函數(shù)指定了最大添加字符數(shù)

? 4)strcmp()函數(shù)用于字符串比較

? 5)strncmp()函數(shù)可以比較到第三個(gè)參數(shù)指定的字符數(shù)

? 6)strcpy()函數(shù)相當(dāng)于是字符串賦值運(yùn)算符

? 7)strncpy()函數(shù)可以指明可拷貝的最大字符數(shù)

? 8)sprintf()函數(shù)把數(shù)據(jù)寫入字符串,而不是打印在顯示器上


6.聲明數(shù)組將分配存儲(chǔ)數(shù)據(jù)的空間,聲明指針只分配儲(chǔ)存一個(gè)地址的空間

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容