2024年c語言字符串函數(shù)的用法 c語言字符串常用函數(shù)通用
范文為教學(xué)中作為模范的文章,也常常用來指寫作的模板。常常用于文秘寫作的參考,也可以作為演講材料編寫前的參考。范文怎么寫才能發(fā)揮它最大的作用呢?下面我給大家整理了一些優(yōu)秀范文,希望能夠幫助到大家,我們一起來看一看吧。
c語言字符串函數(shù)的用法 c語言字符串常用函數(shù)篇一
c語言字符串操作有很多,字符中的函數(shù)和常用的實(shí)現(xiàn)有哪些呢?下面是小編特別為需要實(shí)現(xiàn)編程學(xué)習(xí)的朋友收集整理的,歡迎大家閱讀!更多相關(guān)信息請(qǐng)關(guān)注相關(guān)欄目!
面試官很喜歡讓求職者寫一些常用庫函數(shù)的實(shí)現(xiàn),有很多是和字符串相關(guān)的,有一些是關(guān)于內(nèi)存拷貝的。一般,常會(huì)讓寫的函數(shù)有以下幾個(gè):
memset一般不會(huì)讓去寫,但這個(gè)函數(shù)也很有特點(diǎn),有很多容易用錯(cuò)的地方。一并總結(jié)吧。字符串操作函數(shù) atof()將字符串轉(zhuǎn)換成浮點(diǎn)數(shù)atoi()將字符串轉(zhuǎn)換成整數(shù)atol()將字符串轉(zhuǎn)換成長整型數(shù)gcvt()將浮點(diǎn)型數(shù)轉(zhuǎn)換為字符串(四舍五入)strtod()將字符串轉(zhuǎn)換成浮點(diǎn)數(shù)strtol()將字符串轉(zhuǎn)換成長整型數(shù)strtoul()將字符串轉(zhuǎn)換成無符號(hào)長整型數(shù)toascii()將整數(shù)轉(zhuǎn)換成合法的ascii碼字符tolower()將大寫字母轉(zhuǎn)換為小寫字母toupper()將小寫字母轉(zhuǎn)換為大寫字母index()查找字符串并返回首次出現(xiàn)的位置rindex()查找字符串并返回最后一次出現(xiàn)的.位置strcasecmp()判斷字符串是否相等(忽略大小寫)strcat()連接字符串strcmp()根據(jù)ascii碼比較字符串strcoll()根據(jù)環(huán)境變量lc_collate來比較字符串strcpy()復(fù)制字符串strcspn()查找字符串并返回首次出現(xiàn)的位置strchr()查找字符串并返回首次出現(xiàn)該字符的地址strdup()復(fù)制字符串strlen()返回字符串長度strncasecmp()比較字符串的前n個(gè)字符strncat()拼接字符串(取前n個(gè)字符)strncpy()復(fù)制字符串(取前n個(gè)字符)strpbrk()定位字符串中第一個(gè)出現(xiàn)的指定字符strrchr()定位字符串中最后出現(xiàn)的指定字符strspn()返回從字符串開頭連續(xù)包含特定字符的字符數(shù)目strstr()返回指定字符串第一次出現(xiàn)的地址strtok()字符串分割
strcpy函數(shù)的原型是:
char * strcpy(char* dest, const char* src)
strcpy的實(shí)現(xiàn)經(jīng)常要注意的細(xì)節(jié)是:
(1)判斷地址是否為空,個(gè)人感覺可以使用斷言
(2)參數(shù)只有兩個(gè)地址,沒有拷貝的長度??截惖健畷r(shí)就會(huì)終止,要保證最終dest末尾是。
(3)要保證目標(biāo)字串的長度足夠,能夠容納原串的長度。
(4)因?yàn)榭截愂莇est會(huì)移動(dòng),而最終要返回的是拷貝后字符串的起始地址,因此要先保存dest的地址,便于最終返回。
在實(shí)現(xiàn)這一點(diǎn)時(shí),有兩種方法。 char* temp=dest; 拷貝時(shí)移動(dòng)dest返回temp,或者拷貝時(shí)移動(dòng)temp返回dest,不知道哪個(gè)是對(duì)的。感覺兩個(gè)都是沒有問題的
其中一種實(shí)現(xiàn)方式:
[cpp] view plaincopychar* mystrcpy(char* dest,const char* src)
{
assert(dest!=null && src!=null);
char* temp=dest;
while((*temp++ = *src++ )!=)
{ }
return dest;
}
strncpy的功能和strcpy相似,只是它復(fù)制時(shí)多了一個(gè)終止條件。即是未遇到原串的’,如果已經(jīng)復(fù)制了n個(gè)字符(n為提供的參數(shù)長度),復(fù)制同樣會(huì)終止。
strcpy的實(shí)現(xiàn)要注意的細(xì)節(jié)也基本適用于strncpy的實(shí)現(xiàn)。
實(shí)現(xiàn)方式:
[cpp] view plaincopychar* mystrncpy(char* dest, const char* src, int len)
{
assert(dest!=null && src!=null);
char* temp=dest;
int i=0;
while(i++ < len && (*temp++ = *src++)!=)
{ }
if(*(--temp)!=)
*temp=;
return dest;
}
[cpp] view plaincopy注意:剛開始我寫strncpy的實(shí)現(xiàn)時(shí),把while(i++ < len && (*temp++ = *src++)!=)寫成了while( (*temp++ = *src++)!= && i++ < len); 導(dǎo)致最后多復(fù)制了一個(gè)字符,明白為什么吧。。
memcpy和strncpy有些類似,但也有本質(zhì)的不同。
(1)strncpy只能復(fù)制字符串,但memcpy對(duì)類型沒有要求。
(2)strncpy有兩個(gè)終止條件,memcpy只有一個(gè)終止條件,那就是復(fù)制n個(gè)字節(jié)。(n是memcpy的第三個(gè)參數(shù))
(3)要特別注意目的地址和源地址重合的問題,拷貝前要加以判斷。
(4)實(shí)現(xiàn)這個(gè)函數(shù)時(shí)一般要把原來的指針類型轉(zhuǎn)換成char*,這樣每次移動(dòng)都是一個(gè)字節(jié)。
實(shí)現(xiàn)方式:(考慮了兩個(gè)地址空間是否會(huì)有重疊)
s("content_relate");【c語言字符串操作函數(shù)和常用的實(shí)現(xiàn)】相關(guān)文章:
1.
c語言常用庫函數(shù)實(shí)現(xiàn)
2.c語言中返回字符串函數(shù)的實(shí)現(xiàn)方法
3.c語言字符串處理函數(shù)
4.c語言文件操作函數(shù)
5.c語言之字符串處理函數(shù)
6.c語言的字符串輸出puts()函數(shù)
7.c語言的字符串處理函數(shù)strlen()
8.c 語言中返回字符串函數(shù)的四種實(shí)現(xiàn)方法