函數(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);?? ?? 函數(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);?? ?? 函數(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;??? }??? ? ? ? ? ? ?? 函數(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;?? ??????}?? ? ? ?? 函數(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;?? }?? ? ? ?? 函數(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;?? }?? ? ? ?? 函數(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;?? }?? ? ? ?? 函數(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;?? ????? ???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;?? ????? ???ptr?=?strupr(string);?? ???printf("%s\n",?ptr);?? ???return?0;?? } ?
轉載于:https://www.cnblogs.com/engineerLF/p/5392975.html
總結
以上是生活随笔為你收集整理的C语言字符串操作常用库函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。