1.assert斷言(判斷程序運行時是否符合條件)
<assert.h>頭文件定義了宏assert(),?于在運?時確保程序符合指定條件,如果不符合,就報 錯終?運?。這個宏常常被稱為“斷?”。
assert() 宏接受?個表達式作為參數(shù)。如果該表達式為真(返回值?零), assert() 不會產(chǎn)?任何作?,程序繼續(xù)運?。如果該表達式為假(返回值為零), assert() 就會報錯,在標(biāo)準(zhǔn)錯誤流stderr 中寫??條錯誤信息,顯?沒有通過的表達式,以及包含這個表達式的?件名和?號。
assert() 的使?對程序員是?常友好的,使? assert() 有?個好處:它不僅能?動標(biāo)識?件和出問題的?號,還有?種?需更改代碼就能開啟或關(guān)閉 assert() 的機制。如果已經(jīng)確認(rèn)程序沒有問題,不需要再做斷?,就在 #include <assert.h> 語句的前?,定義?個宏 NDEBUG 。然后,重新編譯程序,編譯器就會禁??件中所有的 assert() 語句。如果程序?出現(xiàn)問題,可以移除這條 #define NDBUG 指令(或者把它注釋掉),再次編譯,這樣就重新啟?了 assert() 語句。
assert() 的缺點是,因為引?了額外的檢查,增加了程序的運?時間。?般我們可以在 Debug 中使?,在 Release 版本中選擇禁? assert 就?,在 VS 這樣的集成開發(fā)環(huán)境中,在 Release 版本中,直接就是優(yōu)化掉了。這樣在debug版本寫有利于程序員排查問題,在 Release 版本不影響??使?時程序的效率。
2.字符函數(shù)
頭文件<ctype.h>
基本格式:文章來源:http://www.zghlxwxcb.cn/news/detail-857953.html
1.字符分類函數(shù)
符號條件返回非0,不符合條件返回0。
2.字符轉(zhuǎn)換函數(shù)
示例:
3.字符串函數(shù)
3.1 strcpy函數(shù)
1.頭文件 <string.h>
2.基本格式
將源頭source中的字符串拷貝到目的地 destination 目標(biāo)數(shù)組中,包括 null 字符(并在該點停止)
源字符串必須以 '\0' 結(jié)束。
目標(biāo)數(shù)組必須足夠大。
目標(biāo)數(shù)組必須可修改。源字符串不可修改。
模擬實現(xiàn):
3.2 strcat函數(shù)
頭文件<string.h>
基本格式:
將源字符串中的字符連接到目標(biāo)字符串中,目標(biāo)字符串中的終止字符 null 將會被源字符串中的第一個字符所覆蓋,源字符串中的終止字符 null 也要連接到目標(biāo)字符串中。
源字符串中必須包含 '\0' 。
目標(biāo)字符串必須包含 '\0',否則不知道連接從哪里開始。
目標(biāo)空間必須足夠大,可以容納下源字符串中的內(nèi)容。
目標(biāo)空間必須可修改。
目的地和來源不可以重疊。否則將會造成字符串無限連接,直到棧溢出。
模擬實現(xiàn):
3.3 strcmp函數(shù)
比較兩個字符串的大小
頭文件<string.h>
從第一個字符開始按 ASCLL 碼值將兩個字符串的字符逐個進行比較,如果相同,則繼續(xù)執(zhí)行下一對,直到遇到字符不同或?\0 停止。
如果 str1 > str2 則返回值 >0
如果 str1 ==?str2 則返回值 ==0
如果 str1 <?str2 則返回值 <0
模擬實現(xiàn):
? ? ? ? ?
3.4 strncpy函數(shù)
1.頭文件<string.h>
2.基本格式:
將源字符串的前num個字符拷貝到目標(biāo)空間中
1.如果在拷貝num個字符之前就找到源字符串的末尾(null),即source的長度小于num,則剩余字符將用零填充,直至將num個字符拷貝到目標(biāo)空間中。
2.如果source的長度大于num,則不會在目標(biāo)空間末尾隱式附加 null 字符。因此,在這種情況下,destination?不應(yīng)被視為以 null 結(jié)尾的字符串(這樣讀取時它會溢出)。
目標(biāo)空間必須足夠大,可以容納下要拷貝的字符串
目標(biāo)空間必須可修改,源字符串不可修改。
目的地和來源不得重疊
模擬實現(xiàn):
3.5 strncat函數(shù)
1.頭文件 <string.h>
2.基本格式:
1.將源字符串的前?num?字符追加到 目標(biāo)空間后,加上一個終止的 null 字符。
2.如果源?字符串的長度小于?num,則僅復(fù)制終止 null 字符之前的內(nèi)容,之后再加上一個終止的 null 字符。
目標(biāo)應(yīng)該足夠大,可以容納下連接的num個字符
目標(biāo)字符串必須可修改,源字符串不可修改
目標(biāo)字符串必須包含終止字符 '\0',否則不知道連接從哪里開始
模擬實現(xiàn):
3.6 strncmp函數(shù)
1.頭文件<string.h>
2.基本格式:
此函數(shù)開始比較每個字符串的第一個字符。如果它們彼此相等,則繼續(xù)執(zhí)行以下對,直到字符不同,直到達到終止的 null 字符,或者直到兩個字符串中的?num?個字符匹配,以先發(fā)生者為準(zhǔn)。
如果 str1 > str2 則返回值 >0
如果 str1 ==?str2 則返回值 ==0
如果 str1 <?str2 則返回值 <0
模擬實現(xiàn):
3.7 strstr函數(shù)
1.頭文件<string.h>
2.基本格式:
返回指向?str1?中首次出現(xiàn)的?str2?的指針,如果?str2?不是?str1?的一部分,則返回空指針。



3.8 strtok函數(shù)
1.頭文件:<string.h>
2.基本格式:




3.9 strerror函數(shù)
1.頭文件<string.h>
2.基本格式:

perror 有能力直接打印錯誤信息,打印的時候,先打印傳遞給perror的字符串,然后打印:,再打印空格,最后打印錯誤信息。如果傳遞給perror的字符串為空字符串,直接打印錯誤信息。
頭文件:<stdio.h>
基本格式:
文章來源地址http://www.zghlxwxcb.cn/news/detail-857953.html
到了這里,關(guān)于C語言——字符函數(shù)和字符串函數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!