字串函式和字元函式 c語言

2021-10-10 02:13:22 字數 4258 閱讀 8778

函式介紹

1.求字串長度

strlen

size_t(const

char

* str)

字串以』\0』為結束的標誌 strlen返回的是遇到』\0』前字元的個數

函式的返回值是size_t(無符號)

模擬實現

1.遞迴 不建立臨時變數

#include

#include

size_t my_strlen

(char

* str)

return1+

my_strlen

(str +1)

;

2.指標相減

size_t my_strlen

(const

char

*str)

return str - start;

}

3.建立臨時變數

size_t my_strlen

(const

char

* str)

return count;

}

長度不受限制的字串函式

1.strcpy :字串拷貝的函式

char

*strcpy

(char

* destination,

const

char

* source );

源字串必須以』\0』結束 源字串拷貝到目標字串時』\0』也要進行拷貝

目標空間必須足夠大 且可以進行修改

模擬實現:

char

*strcpy

(char

* dest,

const

char

* src )

return ret;

}

2.strcat:字串追加函式

char

*strcat

(char

* dest,

const

char

* src)

;

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

目標空間需要足夠大且可以修改

不能自己給自己追加,在追加的過程中,已經修改了源字串的值

模擬實現:

char

*my_strcat

(char

* dest,

const

char

* src)

//再從'\0'處開始進行拷貝

while

(*dest++

=*src++

)return ret;

}

3.strcmp:字串比較函式.比的是ascii值的大小

第乙個字串大於第二個字串,則返回大於0的數字

第乙個字串等於第二個字串,則返回0

第乙個字串小於第二個字串,則返回小於0的數字

int strcmp (

const

char

* str1,

const

char

* str2 )

;

模擬實現

#include

#include

intmy_strcmp

(const

char

* s1,

const

char

* s2)

return

*s1 -

*s2;

}

長度受限制的字串函式

1.strncpy

拷貝num個字元從源字串到目標空間。

char

* strncpy (

char

* destination,

const

char

* source, size_t num )

;

2.strncat

如果源字串的長度小於num,則拷貝完源字串之後,在目標的後邊追加0,直到num個

char

* strncat (

char

* destination,

const

char

* source, size_t num)

;

3.strncmp

int strncmp (

const

char

* str1,

const

char

* str2, size_t num )

;

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

字串查詢

1.strstr :判斷乙個字串是否是另乙個字串的子串

模擬實現:

char

*my_strstr

(const

char

* str1,

const

char

* str2)

while

(*cp)if(

*bf ==

'\0'

)//遍歷完str2,str2是str1的子字串,返回cp

cp++

;//不是子字串,讓cp向後指 再進行遍歷判斷

}

2.strtok:

char

* strtok (

char

* str,

const

char

* sep )

;

第乙個引數指定乙個字串,它包含了0個或者多個由sep字串中乙個或者多個分隔符分割的標記。

strtok函式找到str中的下乙個標記,並將其用 \0 結尾,返回乙個指向這個標記的指標。(注:strtok函式會改變被操作的字串,所以在使用strtok函式切分的字串一般都是臨時拷貝的內容並且可修改。)

strtok函式的第乙個引數不為 null ,函式將找到str中第乙個標記,strtok函式將儲存它在字串中的位置。

strtok函式的第乙個引數為 null ,函式將在同乙個字串中被儲存的位置開始,查詢下乙個標記。

如果字串中不存在更多的標記,則返回 null 指標

記憶體操作函式:

1.memcpy:

void

* memcpy (

void

* dest,

const

void

* src, size_t num )

;

函式memcpy從src的位置開始向後複製num個位元組的資料到dest的記憶體位置。

這個函式在遇到 『\0』 的時候不會停下來。

函式不能處理源記憶體和目標記憶體重疊的情況

模擬實現:

void

*my_memcpy

(void

* dest,

const

void

* src, size_t count)

return ret;

}

2.memmove:

void

*memmove

(void

* dest,

const

void

* src,size_t num)

;

函式處理的源記憶體塊和目標記憶體塊是可以重疊的。

模擬實現:

void

*my_memove

(void

* dest,

const

void

* src, size_t count)

}//從後往前拷貝

else

}return ret;

}

C語言 字串和字串函式

輸入 gets 函式 1.gets 從標準輸入裝置讀取字串,以回車結束讀取,使用 0 結尾,回車符 n 被捨棄沒有遺留在緩衝區。2.可以用來輸入帶空格的字串。3.可以無限讀取,不會判斷上限,因此使用gets不安全,可能會造成溢位。fgets 和 fputs 函式 1.fgets函式的第2個引數指明了...

C語言ctype h字元函式和字串

ctype.h存的是與字元相關的函式 這些函式雖然不能處理整個字串,但是可以處理字串中的字元 toupper 函式,利用toupper 函式處理字串中的每個字元,轉換成大寫 punctcount 函式,利用ispunct 統計字串中的標點符號個數 使用strchr 處理fgets 讀入字串的換行符 ...

C語言的字元函式和字串函式詳解

目錄 釋 是所求 0 之前的字元個數。庫函式型別 size t const char size t unsigned int include int main 長度不受限長度受限strcpystrncpystrcatstrncatstrcmpstrncmp 庫函式型別 char char const...