關于c語言字符串函數和一些內存函數的的簡介
求字符串長度的函數
strlen函數介紹注
模擬實現
. [1 ]計數器方式
因為strlen 是求字符串長度的函數,所以不能改變字符串本身,所以形參用const修飾
創建一個計數器count,每當跳到下一個字符時,count加一,一直到字符串結束,count中記錄的就是字符串長度
. [2 ] 不創建臨時變量計數器
.
此方法用了函數的遞歸思想,每回傳出的參數都是上一個參數加一,也就是每次跳到字符串的下一個字符,當跳到字符串最后一個字符時,返回0,然后逐層返回,最后求出長度
. [3 ]創建一個指針變量
長度不受限制的字符串函數
strcpy
模擬實現
字符串拷貝函數,將src拷貝至dest,不能修改原字符串內容,所以用const修飾
assert函數是斷言,保證指針有效性。整個while循環用來完成復制,src++是先讀取字符再讓指針指向下一個字符
所以dest++也是如此,當字符串到最后一個字符時while就跳出循環,并返回。
strcmp
模擬實現
字符串比較函數是按字典序進行比較的,在c中也就是按字符對應的ASCII碼碼值的大小來進行比較,如果前面的大于后面的,則返回大于0的數,小于返回小于0的數,等于返回0.因為只進行比較,所以不能改變原字符串,所以要用const進行修飾。
strstr
長度受限制的字符串函數介紹
此類函數是為了防止上一類函數存在緩沖區溢出的情況
strncmp
內存操作函數
memcpy
此函數因為是內存復制函數,但他并不是按類型復制,而是按字節復制,這個函數有缺點,就是萬一要拷貝到的區域與你要拷貝的區域有重疊,那么會有不可預料的錯誤。
模擬實現
此函數有三個參數,一個是要拷貝到的區域的位置,另外一個是要拷貝的區域,還有一個是拷貝多少個字節的大小。
在進行拷貝操作時,由于函數的定義形參的時候,用的時void*任意類型指針,該指針不能進行解引用,所以,如果要操作該類指針里面的值時,要進行強制類型轉換。
memmove
該函數是針對上面的函數有緩沖區重疊的情況。
模擬實現
此函數較上一個函數多了一個判斷,判斷拷貝的區域與被拷貝的區域是否有重疊,在進行操作時還是要強制類型轉換。