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