字串函式(認識 實現)

2021-10-03 22:06:41 字數 4567 閱讀 5744

c語言中對字元和字串的處理很多,但是c語言本身沒有字串型別,所以字串通常放在常量字串中或者是字元陣列中,而常量字串適用於不做修改的字串,所以我們在c語言中一般操作的就是字元陣列;

字串

字串就是零個或者多個字元組成的序列,該序列以nul位元組結尾;

字串函式

1、求字串長度

size_t strlen

(const

char

* str)

;1.字串都是以『\0』為結束標誌,strlen返回的是『\0』之前的字元個數,不包括『\0』

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

3.返回值為size_t無符號。

2、長度不受限制的字串函式

char

*strcpy

(char

* destination,

const

char

* source )

//字串拷貝

1.源字串必須以『\0』結尾。

2.會將源字串中的『\0』拷貝至目標空間中。

3.目標空間必須夠大,能放下源字串。

char

*strcat

(char

* destination,

const

char

* source)

//字串拼接

1.源字串必須以『\0』結尾。

2.目標空間必須夠大,能放下源字串。

3.注意不能自己給自己追加。

intstrcmp

(const

char

* str1,

const

char

* str2 )

//字串比較

1.第乙個大於第二個,返回大於0的數字。

2.第乙個等於第二個,返回0。

3.第乙個小於第二個,返回小於0的數字。

3、長度不受限制的字串函式

char

*strncpy

(char

* destination,

const

char

* source, size_t num )

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

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

3.從目標字串頭部開始拷貝。

char

*strncat

(char

* destination,

const

char

* source, size_t num )

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

2.以『\0』位結束標誌,及時字串長度小於num。

3.從目標字串頭部開始拷貝。

intstrncmp

(const

char

* str1,

const

char

* str2, size_t num)

1.比較到出現兩個字元不一樣或者乙個字串結束或者num個字元比較完。

2.返回值同strcmp相同。

4、字串查詢

char

*strstr

(const

char

*str1,

const

char

* str2)

1.返回值,成功返回str2第一次在str1中的指標、失敗返回null。

char

*strtok

(char

* str,

const

char

* sep )

//分割字串

1.sep引數是個字串,定義了用作分隔符的字元集合

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

3.strtok函式找到str中的下乙個標記,並將其用 \0 結尾,返回乙個指向這個標記的指標。(這個操作會改變字串,建議臨時拷貝)。

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

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

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

5、錯誤資訊報告

char

*strerror

(int errnum)

;//返回錯誤碼,所對應資訊

1.使用前包含標頭檔案errno.h

6、字元分類函式和字元轉換

int

islower

(int c)

//檢測是否是小寫字母

intisupper

(int c)

//檢測是否是大寫字母

intisalpha

(int c)

//檢測是否是字母

intisspace

(int c)

//檢測空白字元

字元轉換:

inttolower

(int c)

//轉換為小寫

inttoupper

(int c)

//轉換為大寫

上面羅列一些我常用的,詳細可以在這裡檢視字元分類函式

模擬實現字元函式

1、strlen求字串長度

//方式一:計數

size_t my_strlen

(char

* str)

return count;

}//方式二:不建立臨時變數

size_t my_strlen

(char

* str)

return1+

my_strlen

(str+1)

;}//方式三:指標 - 指標

size_t my_strlen

(char

* str)

return p-str;

}

2、模擬實現strcpy

char

*my_strcpy

(char

*des,

const

char

*src)

return ret;

}

3、模擬實現strcat

char

*my_strcat

(char

*des,

char

*src)

while((

*des++

=*src++))

//拷貝將'\0』也會拷貝

return ret;

}

4、模擬實現strstr

char

*my_strstr

(const

char

*str1,

const

char

*str2)

char

*cp =

(char

*)str1;

char

*substr =

(char

*)str2;

char

*s1 =

null

;while

(*cp)if(

*substr == 』\0')

cp++;}

return

null

;}

5、模擬實現strcmp

//思路:從第乙個字元比較。若相等,繼續向移動乙個,若不相等則,進行比較;

intmy_strcmp

(const

char

* src,

const

char

* des)

ret =

*src -

*des;

if(ret <0)

return-1

;return1;

}

字串函式實現

本文介紹了strcpy,strcnpy,atoi,itoa,strcmp,strncmp,字串逆置的c語言實現 比較簡單,或許存在bug 1.strcpy,strncpy 2.字串的逆置 void reverse char s q 這個時候q是指向 0 的,所以需要往前移動一下 while q p ...

字串函式實現

1.memmove void memmove void dest,const void src,size t count memmove用於從source拷貝count個字元到dest,如果目標區域和源區域有重疊的話,memmove能夠保證在源串覆蓋之前將重疊區域的位元組拷貝到目標區域中 void ...

認識字串

字串是python中常用的資料型別。我們一般使用引號來建立字串。建立字串很簡單,只要為變數分配乙個值即可。a hello world b abcdefg print type a print type b name1 tom name2 rose name3 tom name4 rose a i a...