日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言字符串操作常用库函数

發(fā)布時間:2024/9/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言字符串操作常用库函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

函數(shù)名: strrchr?
功? 能: 在串中查找指定字符的最后一個出現(xiàn)?
用? 法: char *strrchr(char *str, char c);

舉例:

  • char?fullname="./lib/lib1.so";??
  • char?*ptr;??
  • ptr?=?strrchr(fullname,'/');??
  • printf("filename?is?%s",++ptr);??
  • //運行結果:filename?is?lib1.so??
  • 函數(shù)名: strchr?
    功? 能: 在串中查找指定字符的第一個出現(xiàn)?
    用? 法: char *strchr(char *str, char c);

    舉例:

  • char?fullname="./lib/lib1.so";??
  • char?*ptr;??
  • ptr?=?strrchr(fullname,'.');??
  • printf("after?strchr()?is?%s",++ptr);??
  • //運行結果:after?strchr()?is??/lib/lib1.so??
  • 函數(shù)名: strtok?
    功? 能: 在串中查找指定字符的第一個出現(xiàn)?
    用? 法: char *strtok(char *s, char *delim);

    說明:

    1.strtok函數(shù)的實質(zhì)上的處理是,strtok在s中查找包含在delim中的字符并用NULL(’\0′)來替換,直到找遍整個字符串。這句話有兩層含義:(1)每次調(diào)用strtok函數(shù)只能獲得一個分割單位。(2)要獲得所有的分割單元必須反復調(diào)用strtok函數(shù)。

    2.strtok函數(shù)以后的調(diào)用時的需用NULL來替換s.

    3.形參s(要分割的字符串)對應的變量應用char s[]=”….”形式,而不能用char *s=”….”形式。

    舉例:

  • void??main()???
  • {???
  • ????char?buf[]=”Golden?Global?View”;???
  • ????char*?token?=?strtok(?buf,?”?“);???
  • ????while(?token?!=?NULL?)???
  • ????{???
  • ????????printf(?”%s?“,?token?);????
  • ????????token?=?strtok(?NULL,?”?“);???
  • ????}???
  • ????return?0;???
  • }???
  • /*其結果為:?
  • ??
  • Golden?
  • Global?
  • View?
  • */??
  • 函數(shù)名:strncpy

    功能:把src所指由NULL結束的字符串的前n個字節(jié)復制到dest所指的數(shù)組中

    用法:char *strncpy(char *dest, char *src, int n);

    說明:????

    ?????? ?如果src的前n個字節(jié)不含NULL字符,則結果不會以NULL字符結束。
    ??????? 如果src的長度小于n個字節(jié),則以NULL填充dest直到復制完n個字節(jié)。
    ??????? src和dest所指內(nèi)存區(qū)域不可以重疊且dest必須有足夠的空間來容納src的字符串。
    ??????? 返回指向dest的指針。

    舉例:

  • ??#include?<syslib.h>??
  • ??????#include?<string.h>??
  • ??
  • ??????main()??
  • ??????{??
  • ????????char?buf[4];??
  • ????????char?*s="abcdefg";??
  • ?????????
  • ????????strncpy(buf,s,4);??
  • ????????printf("%s\n",buf);??
  • ????????return?0;??
  • ??????}??
  • /*運行結果:?
  • abcd?
  • */??
  • 函數(shù)名: stpcpy
    功??能: 拷貝一個字符串到另一個
    用??法: char *stpcpy(char *destin, char *source);

    舉例:

  • #include?<stdio.h>??
  • #include?<string.h>??
  • int?main(void)??
  • {??
  • ???char?string[10];??
  • ???char?*str1?=?"abcdefghi";??
  • ???stpcpy(string,?str1);??
  • ???printf("%s\n",?string);??
  • ???return?0;??
  • }??
  • /*運行結果?
  • abcdefghi?
  • */??
  • 函數(shù)名: strcat
    功??能: 字符串拼接函數(shù)
    用??法: char *strcat(char *destin, char *source);
    舉例:

  • #include?<string.h>??
  • #include?<stdio.h>??
  • int?main(void)??
  • {??
  • ???char?destination[25];??
  • ???char?*blank?=?"?",?*c?=?"C++",?*Borland?=?"Borland";??
  • ???strcpy(destination,?Borland);??
  • ???strcat(destination,?blank);??
  • ???strcat(destination,?c);??
  • ???printf("%s\n",?destination);??
  • ???return?0;??
  • }??
  • /*運行結果:?
  • Borland?C++?
  • */??
  • 函數(shù)名: strcmp
    功??能: 串比較
    用??法: int strcmp(char *str1, char *str2);
    看Asic碼,str1>str2,返回值 > 0;兩串相等,返回0

    舉例:

  • #include?<string.h>??
  • #include?<stdio.h>??
  • int?main(void)??
  • {??
  • ????char?*buf1?=?"aaa",?*buf2?=?"bbb";??
  • ????int?ptr;??
  • ????ptr?=?strcmp(buf2,?buf1);??
  • ????if?(ptr?>?0)??
  • ???????printf("buffer?2?is?greater?than?buffer?1\n");??
  • ????else?if(ptr?<?0)??
  • ???????printf("buffer?2?is?less?than?buffer?1\n");??
  • ????else??
  • ???????printf("buffer?2?is?equal?with?buffer?1\n");??
  • ????return?0;??
  • }??
  • /*運行結果:?
  • buffer?2?is?greater?than?buffer?1?
  • */??
  • 函數(shù)名: strncmpi
    功??能: 將一個串中的一部分與另一個串比較, 不管大小寫
    用??法: int strncmpi(char *str1, char *str2, unsigned maxlen);

    舉例:

  • #include?<string.h>??
  • #include?<stdio.h>??
  • int?main(void)??
  • {??
  • ???char?*buf1?=?"BBB",?*buf2?=?"bbb";??
  • ???int?ptr;??
  • ???ptr?=?strcmpi(buf2,?buf1);??
  • ???if?(ptr?>?0)??
  • ??????printf("buffer?2?is?greater?than?buffer?1\n");??
  • ???if?(ptr?<?0)??
  • ??????printf("buffer?2?is?less?than?buffer?1\n");??
  • ???if?(ptr?==?0)??
  • ??????printf("buffer?2?equals?buffer?1\n");??
  • ???return?0;??
  • }??
  • 函數(shù)名: strcspn
    功??能: 在串中查找第一個給定字符集內(nèi)容的段
    用??法: int strcspn(char *str1, char *str2);
    舉例:

  • #include?<stdio.h>??
  • #include?<string.h>??
  • #include?<alloc.h>??
  • int?main(void)??
  • {??
  • ????char?*string1?=?"1234567890";??
  • ????char?*string2?=?"747DC8";??
  • ????int?length;??
  • ????length?=?strcspn(string1,?string2);??
  • ????printf("Character?where?strings?intersect?is?at?position?%d\n",?length);??
  • ????return?0;??
  • }??
  • 函數(shù)名: strdup
    功??能: 將串拷貝到新建的位置處
    用??法: char *strdup(char *str);
    舉例:

  • #include?<stdio.h>??
  • #include?<string.h>??
  • #include?<alloc.h>??
  • int?main(void)??
  • {??
  • ????char?*dup_str,?*string?=?"abcde";??
  • ????dup_str?=?strdup(string);??
  • ????printf("%s\n",?dup_str);??
  • ????free(dup_str);??
  • ????return?0;??
  • }??
  • 函數(shù)名: 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?1\n");??
  • ???if?(ptr?<?0)??
  • ??????printf("buffer?2?is?less?than?buffer?1\n");??
  • ???if?(ptr?==?0)??
  • ??????printf("buffer?2?equals?buffer?1\n");??
  • ???return?0;??
  • }??
  • 函數(shù)名: strerror
    功??能: 返回指向錯誤信息字符串的指針
    用??法: char *strerror(int errnum);
    舉例:

  • #include?<stdio.h>??
  • #include?<errno.h>??
  • int?main(void)??
  • {??
  • ???char?*buffer;??
  • ???buffer?=?strerror(errno);??
  • ???printf("Error:?%s\n",?buffer);??
  • ???return?0;??
  • }??
  • 函數(shù)名: strncmp
    功??能: 串比較
    用??法: int strncmp(char *str1, char *str2, int maxlen);
    舉例:

  • #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("buffer?2?is?greater?than?buffer?1\n");??
  • ???else??
  • ??????printf("buffer?2?is?less?than?buffer?1\n");??
  • ???ptr?=?strncmp(buf2,buf3,3);??
  • ???if?(ptr?>?0)??
  • ??????printf("buffer?2?is?greater?than?buffer?3\n");??
  • ???else??
  • ??????printf("buffer?2?is?less?than?buffer?3\n");??
  • ???return(0);??
  • }??
  • 函數(shù)名: strncmpi
    功??能: 把串中的一部分與另一串中的一部分比較, 不管大小寫
    用??法: int strncmpi(char *str1, char *str2, int len);

    舉例:

  • #include?<string.h>??
  • #include?<stdio.h>??
  • int?main(void)??
  • {??
  • ???char?*buf1?=?"BBBccc",?*buf2?=?"bbbccc";??
  • ???int?ptr;??
  • ???ptr?=?strncmpi(buf2,buf1,3);??
  • ???if?(ptr?>?0)??
  • ??????printf("buffer?2?is?greater?than?buffer?1\n");??
  • ???if?(ptr?<?0)??
  • ??????printf("buffer?2?is?less?than?buffer?1\n");??
  • ???if?(ptr?==?0)??
  • ??????printf("buffer?2?equals?buffer?1\n");??
  • ???return?0;??
  • }??
  • 函數(shù)名: strnset
    功??能: 將一個串中的前數(shù)至多n個字符設定為字符都設為指定字符
    用??法: char *strnset(char *str, char ch, unsigned n);
    舉例:

  • #include?<stdio.h>??
  • #include?<string.h>??
  • int?main(void)??
  • {??
  • ???char?*string?=?"abcdefghijklmnopqrstuvwxyz";??
  • ???char?letter?=?'x';??
  • ???printf("string?before?strnset:?%s\n",?string);??
  • ???strnset(string,?letter,?13);??
  • ???printf("string?after??strnset:?%s\n",?string);??
  • ???return?0;??
  • }??
  • 函數(shù)名: strpbrk
    功??能: 在串中查找給定字符集中的字符。依次檢驗字符串s1中的字符,當被檢驗字符在字符串s2中也包含時,則停止檢驗,并返回該字符位置,空字符null不包括在內(nèi)。返回s1中第一個滿足條件的字符的指針,如果沒有匹配字符則返回空指針NULL。
    用??法: 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:?%c\n",?*ptr);??
  • ???else??
  • ??????printf("strpbrk?didn't?find?character?in?set\n");??
  • ???return?0;??
  • }??
  • 函數(shù)名: strrev
    功??能: 串倒轉
    用??法: char *strrev(char *str);
    舉例:

    #include <string.h> #include <stdio.h> int main(void) { char forward[] = "hello world!"; printf("Before strrev(): %s\n", forward); strrev(forward); printf("After strrev(): %s\n", forward); return 0; } /*運行結果: Before strrev(): string After strrev(): gnirts */

    函數(shù)名: strstr
    功??能: 在串中查找指定字符串的第一次出現(xiàn),全匹配,若不匹配為空則返回為null
    用??法: 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:?%s\n",?ptr);??
  • ???return?0;??
  • }??
  • 函數(shù)名: strtod
    功??能: 將字符串轉換為double型值
    用??法: double strtod(char *str, char **endptr);
    舉例:

  • #include?<stdio.h>??
  • #include?<stdlib.h>??
  • int?main(void)??
  • {??
  • ???char?input[80],?*endptr;??
  • ???double?value;??
  • ???printf("Enter?a?floating?point?number:");??
  • ???gets(input);??
  • ???value?=?strtod(input,?&endptr);??
  • ???printf("The?string?is?%s?the?number?is?%lf\n",?input,?value);??
  • ???return?0;??
  • }??
  • 函數(shù)名: strtol
    功??能: 將串轉換為長整數(shù)
    用??法: long strtol(char *str, char **endptr, int base);

    參數(shù)base范圍從2至36,或0。參數(shù)base代表采用的進制方式,如base值為10則采用10進制,若base值為16則采用16進制等。當base值為0時則是采用10進制做轉換,但遇到如’0x’前置字符則會使用16進制做轉換、遇到’0’前置字符而不是’0x’的時候會使用8進制做轉換。 一開始strtol()會掃描參數(shù)nptr字符串,跳過前面的空格字符,直到遇上數(shù)字或正負符號才開始做轉換,再遇到非數(shù)字或字符串結束時('\0')結束轉換,并將結果返回。若參數(shù)endptr不為NULL,則會將遇到不合條件而終止的nptr中的字符指針由endptr返回;若參數(shù)endptr為NULL,則會不返回非法字符串。 舉例:

  • #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?=?%ld\n",?string,?lnumber);??
  • ???return?0;??
  • }??
  • 函數(shù)名: strupr/strlwr
    功??能: 將串中的小寫字母轉換為大寫字母(大寫變?yōu)樾?
    用??法: char *strupr(char *str);char *strlwr(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("%s\n",?ptr);??
  • ???return?0;??
  • } ?
  • 轉載于:https://www.cnblogs.com/engineerLF/p/5392975.html

    總結

    以上是生活随笔為你收集整理的C语言字符串操作常用库函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。