小白學C語言之字元函式與字串函式的實現(一)

2021-10-25 09:17:29 字數 3465 閱讀 1597

本章是網際網路公司裡筆試最愛考的問題之一。主要的函式有:

字串長度函式:strlen

長度不受限制的字串函式: strcpy strcat strcmp

長度受限制的字串函式: strncpy strncat strncmp

字串查詢: strstr strtok

錯誤資訊報告: strerror

字元操作 記憶體操作函式: memcpy memmove memset memcmp

三.長度受限制的字串函式:

字串函式(string processing function)也叫字串處理函式,指的是程式語言中用來進行字串處理的函式。

c語言中對字元和字串的處理很是頻繁,但是c語言本身是沒有字串型別的,字串通常放在常量字串中 或者字元陣列中。 字串常量適用於那些對它不做修改的字串函式。

strlen函式是c語言中計算字串長度的函式。

size_t strlen (

const

char

* str )

;

1.字串已經 『\0』 作為結束標誌,strlen函式返回的是在字串中 『\0』 前面出現的字元個數(不包含 『\0』 )。

2. 引數指向的字串必須要以 『\0』 結束。

3.注意函式的返回值為size_t,是無符號的.

strlen函式的實現:

計數器方式:

intmy_strlen1

(const

char

* str)

return count;

}

遞迴的方式:

intmy_strlen2

(const

char

* str)

指標的方式

intmy_strlen3

(char

*s)

char

*strcpy

(char

* dest,

char

* src)

功 能: 將引數源位址src字串拷貝至引數目標位址dest所指的位址

返回值: 返回引數dest的字串起始位址

說明:

1.源字串必須以』\0』結束

2.會將源字串的』\0』拷貝到目標空間

3.目標空間必須可變 如果引數dest所指的記憶體空間不夠大,可能會造成緩衝溢位的錯誤情況,在編寫程式時需特別留意,或者用strncpy()來取代

模擬實現:

char

*my_strcpy

(char

*dest,

const

char

*src)

char

*strcat

(char

* dest,

const

char

* src)

**實現如下:

char

*my_strcat

(char

*des,

char

*src)

while

(*src)

*des =

'\0'

;return p;

}

int strcmp (

const

char

* str1,

const

char

* str2)

功能:字串比較

返回值:若引數s1和s2字串相同則返回0,s1若大於s2則返回大於0的值,s1若小於s2則返回小於0的值

說明:

int

my_strcmp

(const

char

* src,

const

char

* dst)

char

*strncpy

(char

* dest,

const

char

* src,size_t num)

功能:拷貝src字串的前num個字元至dest
strncpy函式的實現

char

*mystrncpy

(char

*dest,

const

char

*src,

int count)

return p;

}

char

* strncat (

char

* dest,

const

char

* src,size_t num)

**的實現:

char

*mystrncat

(char

*dest,

const

char

*src,

int n)

while

(n &&

(*dest++

=*src++)!=

'\0'

) dest =

'\0'

;return ret;

}

int

strncmp

(const

char

* str1,

const

char

* str2,size_t num)

功能:指定長度比較

返回值:同strcmp

比較到出現另個字元不一樣或者乙個字串結束或者num個字元全部比較完。

**實現:

int

my_strncmp

(const

char

*str1,

const

char

*str2, size_t count)

return

*str1 -

*str2;

}

C語言之字串

字元就是符號 圖案,在計算機中以整數形式儲存,當需要顯示時會根據ascii表中的對應關係,顯示相應的符號或圖案。字元型別 char 的資料 如字元a,a,0,等 在記憶體中以對應的ascii碼存放,不同字元所對應的ascii碼見下表。計算機用乙個位元組 8個二進位制位 儲存乙個字元,例如,字元a的a...

C語言之字串處理函式

c語言中字串處理函式介紹 下面介紹8種基本的常用的字串處理函式,在數值陣列中也常常用到 部分函式 所有的c語言編譯系統中一般都提供這些函式。1 puts函式 輸出字串的函式 一般的形式為puts 字串組 作用 將乙個字串輸出到終端。如,char乙個string,並賦予初值。呼叫puts string...

C語言之字串與指標

1 字串的儲存與訪問 字串的訪問 char str n 第i個字元 str i 思考?以下寫法是否正確?char s1 n s1 welcome s1 welcome 錯誤!必須逐一賦值或使用函式,且陣列長度要足夠大。可以使用字元指標解決 char s s welcome 或 char s welc...