天天看點

keil下的string.h函數

 (1).strchr

原型:extern char *strchr(const char *s,char c); 

  const char *strchr(const char* _Str,int _Val) 

  char *strchr(char* _Str,int _Ch) 

  頭檔案:#include <string.h> 

  功能:查找字元串s中首次出現字元c的位置 

  說明:傳回首次出現c的位置的指針,如果s中不存在c則傳回NULL。 

  傳回值:Returns the address of the first occurrence of the character in the string if successful, or NULL otherwise

(2).strcat

原型

  extern char *strcat(char *dest,char *src); 

用法

  #include <string.h> 

  在C++中,則存在于<cstring>頭檔案中。 

功能

  把src所指字元串添加到dest結尾處(覆寫dest結尾處的'\0')并添加'\0'。 

說明

  src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字元串。 

  傳回指向dest的指針。

(3).strncat

原型:extern char *strncat(char *dest,char *src,int n); 

用法:#include <string.h> 

功能:把src所指字元串的前n個字元添加到dest結尾處(覆寫dest結尾處的'\0')并添加'\0'。 

說明:src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字元串。 

傳回指向dest的指針。

(4).strcmp

函數簡介原型:extern int strcmp(const char *s1,const char * s2); 用法:#include <string.h> 功能:比較字元串s1和s2。 說明: 當s1<s2時,傳回值<0 ; 當s1=s2時,傳回值=0 ; 當s1>s2時,傳回值>0 , 即:兩個字元串自左向右逐個字元相比(按ASCII值大小相比較),直到出現不同的字元或遇'\0'為止。如: "A"<"B" "a">"A" "computer">"compare" 特别注意:strcmp(const char *s1,const char * s2)這裡面隻能比較字元串,不能比較數字等其他形式的參數。 原型:extern int strcmp(const char *s1,const char * s2);

例:#include<stdio.h>

       #include<stdlib.h>

       #include<string.h>

       int p;

       char k1[12]="15104547520";

       char k2[12]="15104547520";

       void main()

      {

           p=strcmp(k1,k2);

           printf("%d\n",p);

      }

注:通過改變k1,k2,看看輸出結果有什麼不同

(5).strncmp

函數名: strncmp 

功 能: 串比較 

用 法: int strncmp(char *str1, char *str2, int maxlen); 

說明:比較字元串str1和str2的大小,如果str1小于str2,傳回值就<0,反之如果str1大于str2,傳回值就>0,如果str1等于str2,傳回值就=0,maxlen指的是str1與str2的比較的字元數。此函數功能即比較字元串str1和str2的前maxlen個字元。

(6).strcpy

原型聲明:extern char *strcpy(char *dest,char *src); 

頭檔案:string.h 

功能:把src所指由NUL結束的字元串複制到dest所指的數組中。  

說明:src和dest所指記憶體區域不可以重疊且dest必須有足夠的空間來容納src的字元串。 

傳回指向dest的指針

(7).strncpy

strncpy:字串複制  

原型:char * strncpy(char *dest, char *src, size_t n); 

功能:将字元串src中最多n個字元複制到字元數組dest中(它并不像strcpy一樣遇到NULL才停止複制,而是等湊夠n個字元才開始複制),傳回指向dest的指針。 

說明: 

  如果n > dest串長度,dest棧空間溢出産生崩潰異常。 

否則: 

  1)src串長度<=dest串長度,(這裡的串長度包含串尾NULL字元) 

  如果n=(0, src串長度),src的前n個字元複制到dest中。但是由于沒有NULL字元,是以直接通路dest串會發生棧溢出的異常情況。 

  如果n = src串長度,與strcpy一緻。 

  如果n = dest串長度,[0,src串長度]處存放于desk字串,(src串長度, dest串長度]處存放NULL。 

  2)src串長度>dest串長度 

  如果n =dest串長度,則dest串沒有NULL字元,會導緻輸出會有亂碼。如果不考慮src串複制完整性,可以将dest最後一字元置為NULL。 

  綜上,一般情況下,使用strncpy時,建議将n置為dest串長度(除非你将多個src串都複制到dest數組,并且從dest尾部反向操作),複制完畢後,為保險起見,将dest串最後一字元置NULL,避免發生在第2)種情況下的輸出亂碼問題。當然喽,無論是strcpy還是strncpy,保證src串長度<dest串長度才是最重要的

(8).strlen

原型:extern unsigned int strlen(char *s);,在Visual C++ 6.0中,原型為size_t strlen( const char *string );,其中size_t實際上是unsigned int,在VC6.0中可以看到這樣的代碼:typedef unsigned int size_t;。 

頭檔案:string.h 

格式:strlen (字元數組名) 

功能:計算字元串s的(unsigned int型)長度,不包括'\0'在内 

說明:傳回s的長度,不包括結束符NULL。

(9).strpos

strpos() 函數傳回字元串在另一個字元串中第一次出現的位置。 

如果沒有找到該字元串,則傳回 false

(10).strrchr()

strrchr() 函數查找字元在指定字元串中從後面開始的第一次出現的位置,如果成功,則傳回指向該位置的指針,如果失敗,則傳回 false

(11).strrpos()

strrpos() 函數查找字元串在另一個字元串中最後一次出現的位置。 

如果成功,則傳回位置,否則傳回 false

(12).strspn

strspn(傳回字元串中第一個不在指定字元串中出現的字元下标) 

表頭檔案 #include<string.h> 

定義函數 size_t strspn (const char *s,const char * accept); 

函數說明 strspn()從參數s 字元串的開頭計算連續的字元,而這些字元都完全是accept 所指字元串中的字元。簡單的說,若strspn()傳回的數值為n,則代表字元串s 開頭連續有n 個字元都是屬于字元串accept内的字元。 

傳回值 傳回字元串s開頭連續包含字元串accept内的字元數目

(13).strcspn

原型:size_t strcspn(const char *s1,const char *s2); 

相關頭檔案:#include <string.h> 

功能:順序在字元串s1中搜尋與s2中字元的第一個相同字元,傳回這個字元在S1中第一次出現的位置。 

說明:(傳回第一個出現的字元在s1中的下标值,亦即在s1中出現而s2中沒有出現的子串的長度。) 

簡單地說,若strcspn()傳回的數值為n,則代表字元串s1開頭連續有n個字元都不含字元串s2内的字元。

(14).strpbrk

  用法:#include <string.h> 

  功能:在字元串s1中尋找字元串s2中任何一個字元相比對的第一個字元的位置,空字元NULL不包括在内。 

  說明:傳回指向s1中第一個相比對的字元的指針,如果沒有比對字元則傳回空指針NULL

(15). strstr

  函數名: strstr 

  功 能: 在字元串中查找指定字元串的第一次出現 

  用 法: char *strstr(char *str1, char *str2); 

  strstr原型:extern char *strstr(char *haystack, char *needle); 

  頭檔案:#include <string.h> 

  功能:從字元串haystack中尋找needle第一次出現的位置(不比較結束符NULL)。 

  說明:傳回指向第一次出現needle位置的指針,如果沒找到則傳回NULL 

(16).strtok

原型  char *strtok(char *s, const char *delim); 

功能

  分解字元串為一組字元串。s為要分解的字元串,delim為分隔符字元串。 

說明

  strtok()用來将字元串分割成一個個片段。參數s指向欲分割的字元串,參數delim則為分割字元串,當strtok()在參數s的字元串中發現到參數delim的分割字元時則會将該字元改為\0 字元。在第一次調用時,strtok()必需給予參數s字元串,往後的調用則将參數s設定成NULL。每次調用成功則傳回被分割出片段的指針。 

傳回值

  從s開頭開始的一個個被分割的串。當沒有被分割的串時則傳回NULL。 

  所有delim中包含的字元都會被濾掉,并将被濾掉的地方設為一處分割的節點

(17).memcmp

  原型:int memcmp(const void *buf1, const void *buf2, unsigned int count); 

  用法:#include <string.h>或#include<memory.h> 

  功能:比較記憶體區域buf1和buf2的前count個位元組。 

  說明: 

  當buf1<buf2時,傳回值<0 

  當buf1=buf2時,傳回值=0 

  當buf1>buf2時,傳回值>0 

(18).memcpy

函數原型  void *memcpy(void *dest, const void *src, size_t n); 

功能

  由src指向位址為起始位址的連續n個位元組的資料複制到以destin指向位址為起始位址的空間内。 

所需頭檔案

  #include <string.h> 

傳回值

  函數傳回一個指向dest的指針。 

說明

  1.source和destin所指記憶體區域不能重疊,函數傳回指向destin的指針。 

  2.與strcpy相比,memcpy并不是遇到'\0'就結束,而是一定會拷貝完n個位元組。 

  3.如果目标數組destin本身已有資料,執行memcpy()後,将覆寫原有資料(最多覆寫n)。如果要追加資料,則每次執行memcpy後,要将目标數組位址增加到你要追加資料的位址。 

  //注意,source和destin都不一定是數組,任意的可讀寫的空間均可

(19).memchr

  原型:extern void *memchr(void *buf, char ch, unsigned int count); 

  用法:#include <string.h> 

  功能:從buf所指記憶體區域的前count個位元組查找字元ch。 

  說明:當第一次遇到字元ch時停止查找。如果成功,傳回指向字元ch的指針;否則傳回NULL

(20).memccpy

  原型:extern void *memccpy(void *dest, void *src, unsigned char c, unsigned int count); 

  參數: 

  dest Pointer to the destination. 

  src Pointer to the source. 

  c Last character to copy. 

  count Number of characters. 

  用法:#include <string.h> 

  功能:由src所指記憶體區域複制不多于count個位元組到dest所指記憶體區域,如果遇到字元c則停止複制。 

  傳回值:如果c沒有被複制,則傳回NULL,否則,傳回一個指向緊接着dest區域後的字元的指針

(21).memmove

  原型:void *memmove( void* dest, const void* src, size_t count ); 

  用法: #include <string.h>或#include <memory.h> 

  功能:由src所指記憶體區域複制count個位元組到dest所指記憶體區域。 

  說明:src和dest所指記憶體區域可以重疊,但複制後dest内容會被更改。函數傳回指向dest的指針

(22).memset

需要的頭檔案  <memory.h> or <string.h> 

函數原型

  void *memset(void *s, int ch, unsigned n);memset原型 (please type "man memset" in your shell) 

  void *memset(void *s, int c, size_t n); 

  memset:作用是在一段記憶體塊中填充某個給定的值,它是對較大的結構體或數組進行清零操作的一種最快方法