【整理】C語言中常見的字串操作函數

來源:互聯網
上載者:User

標籤:c   library   軟體開發   linux   函數   

需求開發中經常會用到很字串操作的函數,現整理常用函數如下:

函數名: strcpy

功  能: 拷貝一個字串到另一個
用  法: char *strcpy(char *destin, char *source);

樣本如下:

<span style="font-size:24px;">#include <stdio.h>#include <string.h>int main(){    char desstr[10];    char *srcstr = "abcdefg";    strcpy(desstr,srcstr);    printf("%s\n",desstr);}</span>

函數名: strcat 
功  能: 字串拼接函數 
用  法: char *strcat(char *destin, char *source); 
程式例:
<pre name="code" class="cpp">#include <stdio.h>#include <string.h>int main(){    char temstr [50] = {0};    char *desstr = "123456";    char *srcstr="789";    char *temp = NULL;    strcpy(temstr,desstr);    strcat(temstr,srcstr);    temp = strchr(temstr,'7');    printf("%s",temp);}



函數名: strchr 
功  能: 在一個串中尋找給定字元的第一個匹配之處 
用  法: char *strchr(char *str, char c);

說明:返回首次出現c的位置的指標,返回的地址是被尋找字串指標開始的第一個與Val相同字元的指標,如果s中不存在c則返回NULL。

程式例

#include <string.h>#include <stdio.h>int main(){    char temstr [50] = {0};    char *desstr = "123456";    char *srcstr="789";    strcpy(temstr,desstr);    strcat(temstr,srcstr);    printf("%s",temstr);}
函數名: strcmp 
功  能: 串比較 
用  法: int strcmp(char *str1, char *str2); 
看Asic碼,str1>str2,返回值 > 0;兩串相等,返回0

/*當s1<s2時,返回為負數當s1=s2時,傳回值= 0當s1>s2時,返回正數*/#include <stdio.h>#include <string.h>int main(){    char string[20];    char str[3][20];    int i;    for(i=0;i<3;i++)        gets(str[i]);    if(strcmp(str[0],str[1])>0)        strcpy(string,str[0]);    else        strcpy(string,str[1]);    if(strcmp(str[2],string)>0)        strcpy(string,str[2]);    printf("\nThe largest string is%s\n",string);    return0;}

函數名: strcspn 
功  能: 在串中尋找第一個給定字元集內容的段 
用  法: int strcspn(char *str1, char *str2);

函數說明:strcspn()從參數s 字串的開頭計算連續的字元, 而這些字元都完全不在參數reject 所指的字串中. 簡單地說, 若strcspn()返回的數值為n, 則代表字串s 開頭連續有n 個字元都不含字串reject 內的字元.返回值:返回字串s 開頭連續不含字串reject 內的字元數目
程式例:

#include <stdio.h>#include <string.h>int main(){    char *desstr = "holle ,hi 123";    char *srcstr=",";    int relust = 0;    relust = strcspn(desstr,srcstr);    printf("%d",relust);}

函數名: strdup 
功  能: 將串拷貝到建立的位置處 
用  法: char *strdup(char *str);

功 能: 將串拷貝到建立的位置處strdup()在內部調用了malloc()為變數分配記憶體,不需要使用返回的字串時,需要用free()釋放相應的記憶體空間,否則會造成記憶體流失。
程式例:


#include <stdio.h> #include <string.h> #include <alloc.h> int main(void) {     char *dup_str, *string = "abcde";     dup_str = strdup(string);     printf("%sn", dup_str);     free(dup_str);     return 0; } 

函數名: stricmp 
功  能: 以大小寫不敏感方式比較兩個串 
用  法: int stricmp(char *str1, char *str2); 
程式例:

#include <string.h> #include <stdio.h> int main(void) {    char *buf1 = "BBB", *buf2 = "bbb";    int ptr;    ptr = stricmp(buf2, buf1);    if (ptr > 0)       printf("buffer 2 is greater than buffer 1n");    if (ptr < 0)       printf("buffer 2 is less than buffer 1n");    if (ptr == 0)       printf("buffer 2 equals buffer 1n");    return 0; }

函數名: strerror 
功  能: 返回指向錯誤資訊字串的指標 
用  法: char *strerror(int errnum);

指向錯誤資訊的指標(即:錯誤的描述字串)。
程式例: 

#include<stdio.h>#include<string.h>#include<errno.h>#include<stdlib.h>int main(void){FILE*fp;externinterrno;char*message;if(NULL==(fp=fopen("/dev/dsp","r+"))){printf("errno=%d\n",errno);message=strerror(errno);printf("Mesg:%s\n",message);}exit(0);}/*輸出:error=2Mesg:No such file or direcory*/


函數名: strncmp 
功  能: 串比較 
用  法: int strncmp(char *str1, char *str2, int maxlen); 
程式例:

/*strncmp函數是指定比較size個字元。也就是說,如果字串s1與s2的前size個字元相同,函數傳回值為0。此函數功能即比較字串str1和str2的前maxlen個字元。如果前maxlen位元組完全相等,傳回值就=0;在前maxlen位元組比較過程中,如果出現str1[n]與str2[n]不等,則依次比較str1和str2的前n位,設i(i<n)為兩字串首次的不同位,則返回(str1[i]-str2[i])。*/#include<string.h>#include<stdio.h>int main(void){char *buf1="aaabbb",*buf2="bbbccc",*buf3="ccc";int ptr;ptr=strncmp(buf2,buf1,3);if(ptr>0)printf("buffer2 is greater than buffer1\n");elseif(ptr<0)printf("buffer2 is less than buffer1\n");ptr=strncmp(buf2,buf3,3);if(ptr>0)printf("buffer2 is greater than buffer3\n");elseif(ptr<0)printf("buffer2 is less than buffer3\n");return(0);}

函數名: strncpy 
功  能: 串拷貝 
用  法: char *strncpy(char *destin, char *source, int maxlen);

可對比strcpy方法使用;
程式例:

#include <stdio.h> #include <string.h> int main(void) {    char string[10];    char *str1 = "abcdefghi";    strncpy(string, str1, 3); /*string 中必須保證有足夠的空間儲存被拷貝進去的字串*/   string[3] = '';    printf("%sn", string);    return 0; } 

函數名: strnset
用 法:char*strnset(char*str,char ch,unsigned n);
功 能: 將一個字串中的前n個字元都設為指定字元ch

程式例:

#include<stdio.h>#include<string.h>int main(void){char string[55]="abcdefghijklmnopqrstuvwxyz";char letter='x';printf("stringbeforestrnset:%s\n",string);strnset(string,letter,13);printf("stringafterstrnset:%s\n",string);return 0;}

函數名: strpbrk 
功  能: 在串中尋找給定字元集中的字元 
用  法: char *strpbrk(char *str1, char *str2); 
程式例: 
#include <stdio.h> #include <string.h> int main(void) {    char *string1 = "abcdefghijklmnopqrstuvwxyz";    char *string2 = "onm";    char *ptr;    ptr = strpbrk(string1, string2);    if (ptr)       printf("strpbrk found first character: %cn", *ptr);    else       printf("strpbrk didn't find character in setn");    return 0; } 

函數名: strstr 
功  能: 在串中尋找指定字串的第一次出現 
用  法: char *strstr(char *str1, char *str2); 
程式例: 
#include <stdio.h> #include <string.h> int main(void) {    char *str1 = "Borland International", *str2 = "nation", *ptr;    ptr = strstr(str1, str2);    printf("The substring is: %sn", ptr);    return 0; } 

函數名: strtod 
功  能: 將字串轉換為double型值 
用  法: double strtod(char *str, char **endptr); 
程式例:


/*strtod()會掃描參數nptr字串,跳過前面的空白字元,直到遇上數字或正負符號才開始做轉換,到出現非數字或字串結束時('\0')才結束轉換,並將結果返回。若endptr不為NULL,則會將遇到不合條件而終止的nptr中的字元指標由endptr傳回。參數nptr字串可包含加號或減號、小數點或E(e)來表示指數部分。如123.456或123e-2。*/#include<stdlib.h>#include<stdio.h>void main(){    char *endptr;    char a[] = "12345.6789";    char b[] = "1234.567qwer";    char c[] = "-232.23e4";    printf( "a=%lf\n", strtod(a,NULL) );    printf( "b=%lf\n", strtod(b,&endptr) );    printf( "endptr=%s\n", endptr );    printf( "c=%lf\n", strtod(c,NULL) );}/*執行:1234a=12345.678900b=1234.567000endptr=qwerc=-2322300.000000*/
函數名: strtol 
功  能: 將串轉換為長整數 
用  法: long strtol(char *str, char **endptr, int base); 
程式例

#include <stdlib.h> #include <stdio.h> int main(void) {    char *string = "87654321", *endptr;    long lnumber;    /* strtol converts string to long integer  */    lnumber = strtol(string, &endptr, 10);    printf("string = %s  long = %ldn", string, lnumber);    return 0; }

函數名: strupr 
功  能: 將串中的小寫字母轉換為大寫字母 
用  法: char *strupr(char *str); 
程式例:
#include <stdio.h> #include <string.h> int main(void) {    char *string = "abcdefghijklmnopqrstuvwxyz", *ptr;    /* converts string to upper case characters */    ptr = strupr(string);    printf("%sn", ptr);    return 0; } 
函數名: swab 
功  能: 交換位元組 
用  法: void swab (char *from, char *to, int nbytes); 
程式例:
#include <stdlib.h> #include <stdio.h> #include <string.h> char source[15] = "rFna koBlrna d"; char target[15]; int main(void) {    swab(source, target, strlen(source));    printf("This is target: %sn", target);    return 0; }


當然還有很多歡迎補充!














著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

【整理】C語言中常見的字串操作函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.