str類常用函式原始碼
阿新 • • 發佈:2019-01-09
strlen() 求字串的長度
原始碼:#include<assert.h> //strlen 原始碼 int strlen(const char *str) { assert(*str != '\0'); //斷言,判斷字串是否為空,下同 const char *cp = str; //str依然為字串首位置 while(*cp ++); return (cp - str - 1); //-1是因為字串末尾有\0, strlen得到的字串長度沒有\0 }
strcmp() 判斷兩個字串的大小
原始碼:#include<assert.h> //判斷字串大小 int strcmp(const char *src, const char *dst) { assert(NULL != src && NULL != dst); while(*src && *dst && *src++ == *dst++);//當兩個字串都不為空切當前字串相等時 return *src - *dst; //返回當前不等字元差值,根據返回值的正負號判斷大小 }
strcpy() 將目標字串複製給源字串並覆蓋源字串
原始碼:#include<assert.h> //copy字串 char *strcpy(char *src, const char *dst) { assert(NULL != src && NULL != dst); char *temp = src; //因為下面*str++程式執行完時str不是指向字串首位置,所以需要定義一個新的字串儲存字串首地址,下同while(*src++ = *dst++); return temp; }
strncpy() 按照指定字元個數copy字串
原始碼:#include<assert.h> //按照指定個數copy字串 char *strncpy(char *src, const char *dst, int count) { assert(NULL != src && NULL!= dst); char *temp = src; while((count--) && (*src++ = *dst++));//這裡要注意count--要在&&前面,不然會出錯*src = '\0'; //由於不是copy整個字串,所以結尾可能不是\0所以要自己加上
return temp;
}strcat() 將兩個字串拼接
原始碼:#include<assert.h> //拼接字串 char *strcat(char *src, const char *dst) { assert(NULL != src && NULL != dst); char *temp = src; while(*src) //讓src字串跑到結尾,然後跟strcpy一樣實現拼接 { src ++; } while(*src++ = *dst++); return temp; }
strncat() 按照指定個數實現制定個數字元的拼接
原始碼:#include<assert.h>
//按照指定字元個數拼接字串
char *strncat(char *src, const char *dst, int count)
{
assert(NULL != src && NULL != dst);
char *temp = src;
while(*src)
{
src++;
}
while((count--) && (*src++ = *dst++));
return temp;
}