C語言字符串操作函數及常用的實現
來源:文萃谷 1.61W
面試官很喜歡讓求職者寫一些常用庫函數的實現,有很多是和字符串相關的,有一些是關於內存拷貝的。一般,常會讓寫的函數有以下幾個:
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)參數只有兩個地址,沒有拷貝的長度。拷貝到'