C語言字符串操作函數及常用的實現

來源:文萃谷 1.61W

面試官很喜歡讓求職者寫一些常用庫函數的實現,有很多是和字符串相關的,有一些是關於內存拷貝的。一般,常會讓寫的函數有以下幾個:

C語言字符串操作函數及常用的實現

strcpy , strncpy, memcpy。

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()字符串分割

  1. strcpy

strcpy函數的原型是:

char * strcpy(char* dest, const char* src)

strcpy的實現經常要注意的細節是:

(1)判斷地址是否為空,個人感覺可以使用斷言

(2)參數只有兩個地址,沒有拷貝的長度。拷貝到'