Linux 字符串處理函數


1 strchr

函數原型:extern char *strchr(char *str,char character)

參數說明:str為一個字符串的指針,character為一個待查找字符。
        
所在庫名:#include <string.h>
 
函數功能:從字符串str中尋找字符character第一次出現的位置。
 
返回說明:返回指向第一次出現字符character位置的指針,如果沒找到則返回NULL。

2 strstr函數

函數功能:在一個字符串中查找一個字串

函數原型:char *strstr(char const *s1,char const *s2);

函數說明:strstr實現在s1中查找整個s2第一次出現的位置,不包括str2的串結束符, 並返回一個指向該位置的指針。如果s2並沒有完整的出現在s1的任何地方,函數返回一個NULL指針。如果第二個字符串是一個空字符串,函數返回s1。

     兩個函數的區別是,strchr是在字符串中查找單個字符,可以是'\n'換行符(驗證過),strstr是在s1中查找出現s2的位置,在字符串中查找另外一個字符串出現的位置。

3 strcat函數

原型: char *strcat(char *dest,char *src)
參數說明:dest為一個目的字符串的指針,即被連接的字符串(在前),src為一個源字符串的指針(在后)。
       
所在庫名:#include <string.h>
 
函數功能:把src所指字符串添加到dest結尾處實現字符串的連接,連接過程覆蓋dest結尾處的'/0'。
 
返回說明:src和dest所指內存區域不可以重疊,並且dest必須有足夠的空間來容納src的字符串返回指向dest的指針

4 strncat 函數

函數原型:extern char *strncat(char *dest,char *src,int n)
參數說明:src為源字符串,dest為目的字符串,n為指定的src中的前n個字符。
       
所在庫名:#include <string.h>
 
函數功能:把src所指字符串的前n個字符添加到dest結尾處,覆蓋dest結尾處的'/0',實現字符串連接。
 
返回說明:返回指針,連接后的字符串。

 

5  strlen函數

函數:size_t strlen(const char *s);

功能:strlen()用來計算指定的字符串s的長度,不包括結束字符"\0"。

頭文件:#include <string.h>

返回值:返回字符串s的字符數。

 

6  strcmp函數

函數:int strcmp(const char *s1, const char *s2);

功能:strcmp()用來比較參數s1和s2字符串。字符串大小的比較是以ASCII 碼表上的順序來決定,此順序亦為字符的值。strcmp()首先將s1第一個字符值減去s2第一個字符值,若差值為0則再繼續比較下個字符,若差值不為0則將差值返回。例如字符串"Ac"和"ba"比較則會返回字符"A"(65)和'b'(98)的差值(-33)。

頭文件:#include <string.h>

返回值:若參數s1和s2字符串相同則返回0。s1若大於s2則返回大於0的值。s1若小於s2則返回小於0 的值。

 

7   strcpy函數

函數:char *strcpy(char *dest, const char *src);

功能:strcpy()會將參數src字符串拷貝至參數dest所指的地址。

頭文件:#include <string.h>

返回值:返回參數dest的字符串起始地址。如果參數dest所指的內存空間不夠大,可能會造成緩沖溢出(buffer Overflow)的錯誤情況,在編寫程序時請特別留意,或者用 strncpy() 來取代。

8   strncpy函數

函數:    char * strncpy(char *dest, const char *src, size_t n);

功能:復制字符串src中的內容(字符,數字、漢字....)到字符串dest中,復制多少由n的值決定。如果src的前n個字符不含NULL字符,則結果不會以NULL字符結束。如果n<src的長度,只是將src的前n個字符復制到dest的前n個字符,不自動添加'\0',也就是結果dest不包括'\0',需要再手動添加一個'\0'。如果src的長度小於n個字節,則以NULL填充dest直到復制完n個字節。src和dest所指內存區域不可以重疊且dest必須有足夠的空間來容納src的字符長度+'\0'

頭文件:#include <string.h>

【參數說明】dest 為目標字符串指針,src 為源字符串指針。strncpy()會將字符串src前n個字符拷貝到字符串dest。src 和 dest 所指的內存區域不能重疊,且 dest 必須有足夠的空間放置n個字符。

不像strcpy(),strncpy()不會向dest追加結束標記'\0',所以在strncpy()后使用strcat()因找不到‘\0’會有問題;

若想strncpy()在結尾添加"\0"則需n大於src字符串長度

9   strpbrk函數

函數:char *strpbrk(const char *str, const char *group);

功能:依次檢驗字符串str中的字符,當被檢驗字符在字符串group中也包含時,則停止檢驗,並返回該字 符位置,空字符NULL不包括在內。

頭文件:#include <string.h>

返回值:返回str中第一個滿足條件的字符的指針,如果沒有匹配字符則返回空指針NULL

10   strtok函數

函數:char *strtok(char *s, const char *delim);

功能:分解字符串為一組字符串。s為要分解的字符串,delim為分隔符字符串, strtok()用來將字符串分割成一個個片段。參數s指向欲分割的字符串,參數delim則為分割字符串,當strtok()在參數s的字符串中發現到參數delim的分割字符時則會將該字符改為\0 字符。在第一次調用時,strtok()必需給予參數s字符串,往后的調用則將參數s設置成NULL。每次調用成功則返回被分割出片段的指針。

頭文件:#include <string.h>

返回值 : 從s開頭開始的一個個被分割的串。當沒有被分割的串時則返回NULL。所有delim中包含的字符都會被濾掉,並將被濾掉的地方設為一處分割的節點

舉例:

使用第二個參數ct中的分隔符字符串,分割第一個參數s,ct參數的分隔符可以是任意字符,可以是單個字符的分隔符,也可以是字符串形式的分隔符如:"!,;'/"等,都可以作為分隔符。例如:

s="abc,def,123;456!/aaa"
ct=",;!/"
s將被分割為為:abc def 123 456 aaa

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
  char s[] = "abc,def,123;456!/aaa";
  char delim[] = " ,;!/";

  char *p = NULL;
  for(p = strtok(s, delim); p != NULL; p = strtok(NULL, delim))
  {
    printf("%s ", p);
  }
  printf("\n");

  return 0;
}

 



gcc strtok.c -o strtok
$ ./strtok
abc def 123 456 aaa
---------------------
作者:xiaoyao1004
來源:CSDN
原文:https://blog.csdn.net/xiaoyao1004/article/details/83863344
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM