C语言程序设计 | 模拟实现字符串操作函数:strlen, strcmp, strcpy, strcat, strchr, strstr
生活随笔
收集整理的這篇文章主要介紹了
C语言程序设计 | 模拟实现字符串操作函数:strlen, strcmp, strcpy, strcat, strchr, strstr
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
模擬實(shí)現(xiàn)字符串和內(nèi)存操作函數(shù)(一)目錄:
- strlen
- strcpy
- strcat
- strcmp
- strstr
- strchr
strlen
size_t strlen(const char* str)
- 字符串以‘\0’作為結(jié)束標(biāo)志,strlen函數(shù)返回的是在字符串中‘\0’前面出現(xiàn)的字符個數(shù)(不包含’\0’)。
- 參數(shù)指向的字符串必須要以‘\0’結(jié)束。
- 函數(shù)的返回值為size_t,是無符號類型。
- 因?yàn)槭悄M庫函數(shù),所以為了防止調(diào)用者放入空指針或者防止傳入的字符串被修改,下面的函數(shù)中會用到assert函數(shù)和const。
strcpy
char* strcpy(char* dst,const char* src)
- strcpy把含有’\0’結(jié)束符的字符串復(fù)制到另一個地址空間,返回值的類型為char*。
- 源字符串必須以’\0’結(jié)束
- 會將源字符串的’\0’拷貝到目標(biāo)空間
- 目標(biāo)空間必須可變,并且具有足夠大的空間來存放源字符串
strcat
char* strcat(char* dst,const char* src)
- strcat把src所指向的字符串(包括“\0”)復(fù)制到dest所指向的字符串后面。
- 源字符串必須以’\0’結(jié)束
- 會將源字符串的’\0’拷貝到目標(biāo)空間
- 目標(biāo)空間必須可變,并且具有足夠大的空間來存放源字符串
strcmp
int my_strcmp(const char* str1, const char* str2)
- strcmp兩個字符串自左向右逐個字符相比(按ASCII值大小相比較),直到出現(xiàn)不同的字符或遇’\0’為止。
- 源字符串必須以’\0’結(jié)束
- 當(dāng)str1<str2時,返回為負(fù)數(shù),
- 當(dāng)str1=str2時,返回值= 0
- 當(dāng)str1>str2時,返回為正數(shù)
- 需要將類型強(qiáng)轉(zhuǎn)為unsighed char* ,因?yàn)閷Ρ鹊氖茿SCII碼值,但是當(dāng)大于127時會自動將其按照補(bǔ)碼的形式轉(zhuǎn)換為負(fù)數(shù),則會產(chǎn)生錯誤
strstr
char* my_strstr(const char* src, const char* sub)
- strstr返回一個指針,指向sub在src中首次出現(xiàn)的位置。
strchr
char* strchr(char* dst,const char* src)
- strchr返回一個指向該字符串中第一次出現(xiàn)的字符的指針,如果字符串中不包含該字符則返回NULL空指針。
總結(jié)
以上是生活随笔為你收集整理的C语言程序设计 | 模拟实现字符串操作函数:strlen, strcmp, strcpy, strcat, strchr, strstr的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言程序设计 | 指针(二):常量指针
- 下一篇: C语言程序设计 | 模拟实现内存操作函数