c語言中字串處理函數

來源:互聯網
上載者:User

1、 比較字串大小函數  

       1) 忽略大小寫---strcasecmp

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

函數說明: 用來比較參數s1和s2字串,比較時會自動忽略大小寫差異

2)忽略大小寫—stricmp

函數原型:int stricmp(char *str1, char *str2);

函數說明:以大小寫不敏感方式比較兩個串

3) 不忽略大小寫—strcmp

函數原型:int strcmp(char*str1,char*str2);

函數說明:通過比較字串中各個字元的ASCII碼,來比較參數Str1和Str2字串,比較時考慮字元的大小寫。

4) 比較一部分—strncmpi

函數原型:int strncmpi(char *str1, char *str2, unsigned maxlen);

函數說明:比較字串str1和str2的前maxlen個字元

5)記憶體地區比較---memcmp

函數原型:int memcmp(void*buf1,void *buf2,unsigned int count)

函數說明:比較記憶體地區buf1和buf2的前count個位元組。Void*是指任何類型的指標。

6)記憶體地區部分比較-- memicmp Void*是指任何類型的指標。

函數原型:int memicmp(void*buf1,void *buf2,unsigned int count)

函數說明:比較記憶體地區buf1和buf2的前count個位元組,但不區分大小寫。

 

以上比較函數的傳回值: 若參數1中字串和參數中2字串相同則返回0;

                                             若參數1中字串長度大於參數2中字串長度則返回大於0 的值;

                                           若參數1中字串 長度小於參數2中字串 長度則返回小於0的值。     2、 從字串中提取子串  

1) 提取子串--strstr

函數原型:char* strstr(char*src,char*find)

函數說明:從字串src中尋找find第一次出現的位置(不比較結束符NULL)

傳回值:返回指向第一次出現find位置的指標,如果沒有找到則返回NULL

2) 提取分隔字元間字串—strtok

函數原型:char *strtok(char*src, char*delim);

函數說明:分解字串誒一組標記串,src為要分解的字串,delim為分隔字元字串。

             首次調用時,src必須指向要分解的字串,隨後調用要把s設成NULL;

              strtok中src中尋找包含在delim中的字元,並用NULL(’\0’)來替換直到找遍整個字串。

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

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

舉例:

    #include <string.h>

    #include <stdio.h>

    int main(){

        char *s="Golden Global View";

        char *d=" ";

        char *p;

         p=strtok(s,d);

        while(p){

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

          strtok(NULL,d);

        }

        return 0;

}

輸出:Golden

           Global

           View

3、 字串複製

1)      字串複製--strcpy

函數原型:char*strcpy(char*dest,char*src)

函數說明:把src所指由NULL結束的字串複製到dest所指的數組中。

                   其中,src和dest所致記憶體地區不可重疊且dest必須有足夠的空間來容納src的字串。

傳回值:返回指向dest的指標。

2) 字串複製--strdup

函數原型:char* strdup(char*src)

函數說明:複製字串src

傳回值:返回指向被複製字串的指標,所需空間有malloc()分配且可以有free()釋放。

3) 記憶體空間複製--memcpy

函數原型:void *memcpy(void *dest,void *src,unsigned int count);

函數說明:src和dest 所指記憶體地區不能重疊;由src所致記憶體地區複製count個位元組到dest所指記憶體地區中。

傳回值:返回指向dest的指標。

4、字串串連   

1)接尾串連--strcat

函數原型:char* strcat(char*dest,char*src)

函數說明:把src所指字串添加到dest結尾處(覆蓋dest結尾處的'\0')並添加'\0'

2)部分串連--strncat

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

函數說明:把src所指字串的前n個字元添加到dest結尾處(覆蓋dest結尾處的’\0’)並添加’’\0’.

傳回值:返回指向dest的指標。

5、從字串中尋找字元

1)記憶體地區找字元--memchr

函數原型:void *memchr(void*buf,char ch,usigned count)

函數說明:從buf所指記憶體地區的前count個位元組尋找字元ch,當第一次遇到字元ch時停止尋找。

傳回值:如果找到了,返回指向字元ch的指標;否則返回NULL

2)字串中找字元--strchr

函數原型:char* strchr(char*src,char ch)

函數說明:尋找字串s中首次出現字元ch的位置

傳回值:返回首次出現c的位置的指標,如果s中不存在c則返回NULL

3)搜所現字元--strcspn

函數原型:int strcspn(char*src,char*find)

函數說明:在字串src中搜尋find中所出現的字元

傳回值:返回第一個出現的字元在src中的下標值,即src中出現而不在find中出現的字串的長度。

舉例:

#include <string.h>

#include <stdio.h>

int main(){

    char *s="Golden Global View";

    char *r="new";

    int n;

    n=strcspn(s,r);

    printf("The first char both in s1 and s2 is: %c",s[n]);

   return 0;

}

輸出:The first char both in s1 and s2 is :e

4)匹配任一字元--strpbrk

函數原型:char*strpbrk(char*s1,char*s2)

函數說明:在字串S1中尋找字串S2中任何一個字元相匹配的第一個字元的位置,Null 字元不包括在內。

傳回值:返回指向S1中第一個相匹配的字元的指標,如果沒有匹配字元則返回null 指標。

舉例:

#include <stdio.h>

#include <string.h>

int main(){

    char *s1="Welcome To Beijing";

    char *s2="BIT";

    char *p;

    p=strpbrk(s1,s2);

    if(p)

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

    else printf("Not Found!\n");

    return 0;

}

輸出:To Beijing

6、其他函數

1)全部轉成大寫---strupr

函數原型:char*strupr(char*src)

函數說明:將字串src轉換成大寫形式,只轉換src中出現的小寫字母,不改變其他字元

傳回值:返回指向src的指標。

2)全部轉成小寫---strlwr

函數原型:char*strlwr(char*src)

函數說明:將字串src轉換成小寫形式,只轉換src中出現的大寫字母,不改變其他字元

傳回值:返回指向src的指標。

3)將字串逆向--strrev

函數原型:char*strrev(char*src)

函數說明:把字串src的所有字元的順序顛倒過來(不包括NULL)

傳回值:返回指向顛倒順序後的字串指標

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.