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
版權聲明:本文爲博主原創文章,轉載請附上博文連接!spa

相關文章
相關標籤/搜索