字元記憶體函式的應用

2021-09-29 14:40:21 字數 2955 閱讀 3991

字元函式(character function)是處理字元型資料的函式,其自變數或函式值中至少有乙個是字元型資料。

1.strcpy 字串的複製

①char *strcpy( char *dst, const char *str )

將src字串複製到dst上,由於dst引數是被修改的,所以他必須是乙個字元陣列或者是乙個指向動態分配記憶體的陣列的指標,不能使用字串常量。新的字串以』\0』結尾,

(dst為目標函式,str為原函式)

②應用

int

main()

③模擬實現
#include

#include

intmy_strlen

(const

char

* str)

else

}int

main()

2.strcat 字串的追加

①char* my_strcat(char* dst, const char* src)

strcat是把乙個字串新增到另外乙個字串的後面

②模擬實現

char

*my_strcat

(char

* dst,

const

char

* src)

while

(*dst++

=*src++);

return ret;

}

3.strstr 判斷是否為子串(是返回值1,不是返回值0)

①char *strstr( const char *dst, const char *str );

②模擬實現

const

char

*my_strstr

(const

char

* src,

const

char

* sub)if(

*subi ==

'\0'

)else

}return

null;}

intmain()

else

char

* p1 =

"aaaabcd"

;char

* p2 =

"aaab"

;char

* pos =

strstr

(p1, p2)

;printf

("%s\n"

, pos)

;}

4.strchr 查詢字元

①char *strchr( const char *str, char c );

str為乙個字串的指標,c為乙個待查詢字元

②模擬實現

char

*my_strchr

(const

char

*str,

char c)

else

}return

null

;//找完全部,如果沒有,則返回null

}

5.strcmp 字串比較

①int my_strcmp(const char* str1, const char* str2)

從字串起始第乙個字元比起,如果str1的ascii碼大於str2返回1

相等比較下乙個字元直到比完任然相等返回0,str1小於str2返回負值

②模擬實現

int

my_strcmp

(const

char

* str1,

const

char

* str2)

elseif(

*s1 <

*s2)

else}if

(*s1 ==

'\0'

&&*s2 ==

'\0'

)elseif(

*s1 ==

'\0'

)else

return ret;

}

6.memcpy

由於字串函式遇到第乙個nul位元組將停止工作,這就要求字串內部不能包含任何nul位元組,但是字串內部包含nul位元組的情況很常見,所以我們使用記憶體操作來解決這個問題。memcpy可以複製源字串的n個位元組到目的字串中,使用這種方法可以複製任何型別的值;

①void* my_memcpy(void* dst, const void* src, size_t num)

dst表示目標函式,str表示原函式,num表示拷貝位元組長度

②模擬實現

void

*my_memcpy

(void

* dst,

const

void

* src, size_t num)

return dst;

}

7.memmove

①void *mymemmove(void * dst, const void * src, size_t num)

memmove的是一種更為有效的拷貝方式,表示從src拷貝num個位元組長度到dst上

memmove() 與 memcpy() 類似都是用來複製 src 所指的記憶體內容前 num 個位元組到 dest 所指的位址上。不同的是,memmove() 更為靈活,當src 和 dest 所指的記憶體區域重疊時,memmove() 仍然可以正確的處理,不過執行效率上會比使用 memcpy() 略慢些。

②模擬實現

void

*mymemmove

(void

* dst,

const

void

* src, size_t num)

}else

}return ret;

}

庫函式實現(字元和字串函式 記憶體操作函式)

int mystrlen char p return count int main char mystrcpy char des,const char src intmain char mystrcat char dest,char src char p dest char start dest s...

C 記憶體操作函式 與 字元處理函式

函式引數為真條件 iscntrl任何控制字元 isspace空白字元 包括空格 換頁 f 回車 r 換行 n 製表符 t v isdigit十進位制數字0 9 isxdigit十六進製制數字,包括所有十進位制數字,小寫字母a f,大寫字母a f islower小寫字母a z isupper大寫字母a...

Oracle 字元函式應用 檢測漢字

驗證是否包含漢字 create table test a varchar2 10 insert into test values 鳥 insert into test values 深刻 insert into test values aaa insert into test values bbb ...