ANSI C中常見的字串函式

2021-06-28 11:51:49 字數 2912 閱讀 9307

strcpy()函式:把s2指向的字串(包括空字元)複製到s1指向的位置,返回值是s1,在呼叫strcpy函式的時候,s1可以不指向陣列的開始,例如:第乙個引數為s1+5,表示把s2指向的字串複製到s1+5指向的位置。

char *strcpy (char * s1, const char * s2);

strncpy()函式:把s2指向的字串複製到s1指向的位置,複製的字元數不超過n個,返回值是s1。如果s2字串的字元數少於n個,在s1字串中就以空字元('\n')填充。如果s2字串的字元數大於或等於n個,就會複製s2的前n個字元,然後返回s1的時候就不會有字串結束標誌(空字元\0),就會有奇怪的字元返回。

char *strncpy (char * s1, const char * s2, size_t n);

strcat()函式:把s2指向的字串複製到s1指向字串的結尾,複製過來的s2所指字串的第乙個字元覆蓋了s1所指字串結尾的空字元。返回值是s1。

char *strcat (char * s1, const char * s2);

strncat()函式:s2字串中只有前面n個字元被追加到s1字串的結尾,複製過來的s2所指字串的第乙個字元覆蓋了s1所指字串結尾的空字元。s2字串中的空字元及其後的任何字元都不會被複製,並且自動新增乙個空字元到所得結果後面。返回值是s1。

char * strncat (char * s1, const char * s2, size_t n);

上面幾個字串函式呼叫成功後的返回值都是s1,在函式呼叫過程中都不會改變字串s2的值,所以加上乙個const限定符。在使用上面幾個函式的時候,可以直接呼叫不獲取返回值,因為在呼叫過程中s1所指向的字串發生了變化,然後直接使用s1指標。

strcmp()函式:如果s1指向的字串在機器編碼(字元一般都是使用ascii碼,依次比較單個字元)落後於s2指向的字串,函式的返回值是乙個正數,如果兩個字串相同,返回值是0,如果s1指向的字串在機器編碼先於s2指向的字串,函式的返回值是乙個負數。

int strcmp (const char * s1, const char * s2);

strncmp()函式:該函式與上面strcmp()函式一樣,只是多了乙個引數,表示只比較前n個字元或者遇到第乙個空字元時會停止比較,由二者中最先被滿足的那乙個條件終止比較過程。

int strncmp ( const char * s1, const char * s2, size_t n);

strchr()函式:該函式返回乙個指向字串s中存放字元c的第乙個位置的指標(標誌字串結束的空字元是字串的一部分,也可以搜尋到)。如果沒有找到該字元,函式就返回空指標。

char * strchr (const char * s, const char c);

strrchr()函式:與strchr()函式類似,該函式返回乙個指向字串s中存放字元c的最後乙個位置的指標。如果沒有找到該字元,函式就返回空指標。

char * strrchr ( const char * s, const char c);

strpbrk()函式:該函式返回乙個指標,指向字串s1中存放s2字串中的任何字元的第乙個位置。如果沒有找到任何字元,函式就返回空指標。

char * strpbrk (const char * s1, const char * s2);

strstr()函式:該函式返回乙個指標,指向s1字串中第一次出現s2字串的地方。如果沒有找到s2字串,函式就返回空指標。

char * strstr (const char * s1, const char * s2);

strlen()函式:該函式返回s字串中字元的個數,不包括字串結束標誌的空字元。

size_t strlen (const char * s);
memcpy()函式:上面提到的strcpy()函式和strncpy()函式可以複製字元陣列,memcpy()函式額可以複製其他型別的陣列,從s2指向的位置複製n位元組資料到s1指向的位置,且返回s1的值,關鍵字restrict可以假定兩個記憶體區域之間沒有重疊,如果兩個區域存在重疊時使用memcpy()函式,其行為是不可預知的。引數為void型別指標,c允許將任何型別的指標賦值給void*型別指標。第三個引數是指定要複製的位元組數。

void * memcpy (void * restrict s1, const void * restrict s2, size_t n);
memmove()函式:和上面提到的memcpy()函式一樣,可以複製其他型別的陣列,但是沒有restrict限制,兩個區域可以存在重疊,因為在copy的時候,是先把所有位元組複製到乙個臨時緩衝區,然後再複製到最終目的地。

void * memove (void * s1, const void * s2, size_t n);
上面提到的

size_t型別和所有的字串函式都是在

c語言中字串長度

C語言中常見的字元函式和字串函式

1.求字串的長度 strlen函式 1.函式介紹 size t strlen const char str strlen函式的模擬實現 include 方法1 計數器實現的方式 intmy strlen1 const char str return count 遞迴 不建立臨時的計數器 intmy ...

python中常見的字串操作

如有字串mystr hello world and bjsxt yunshuxueyuan sxt beijing 以下是常見的操作 1 find 檢測 str 是否包含在 mystr中,如果是返回開始的索引值,否則返回 1 mystr.find str,start 0,end len mystr ...

js 中常見的 字串操作

1 indexof 從左往右搜尋 var a hello,word indexof 檢測有某個字元 則返回這個字元的位置,沒有檢測出這個字元 則返回 1 a.indexof w 1 a.indexof w 62 lastindexof 方法可返回乙個指定的字串值最後出現的位置,從後向前搜尋 last...