C语言字符串操作常用库函数
函数名:strrchr
功能:在串中查找指定字符的最后一个出现
用法:char*strrchr(char*str,charc);举例:charfullname="./lib/lib1.so";char*ptr;ptr=strrchr(fullname,'/');printf("filenameis%s",++ptr);//运行结果:filenameislib1.so函数名:strchr
功能:在串中查找指定字符的第一个出现
用法:char*strchr(char*str,charc);举例:charfullname="./lib/lib1.so";char*ptr;ptr=strrchr(fullname,'.');printf("afterstrchr()is%s",++ptr);//运行结果:afterstrchr()is/lib/lib1.so函数名:strtok
功能:在串中查找指定字符的第一个出现
用法:char*strtok(char*s,char*delim);
说明:
1.strtok函数的实质上的处理是,strtok在s中查找包含在delim中的字符并用NULL('\0′)来替换,直到找遍整个字符串。这句话有两层含义:(1)每次调用strtok函数只能获得一个分割单位。(2)要获得所有的分割单元必须反复调用strtok函数。
2.strtok函数以后的调用时的需用NULL来替换s.
3.形参s(要分割的字符串)对应的变量应用chars[]="…."形式,而不能用char*s="…."形式。举例:voidmain(){charbuf[]="GoldenGlobalView";char*token=strtok(buf,"");while(token!=NULL){printf("%s",token);token=strtok(NULL,"");}return0;}/*其结果为:GoldenGlobalView*/函数名:strncpy
功能:把src所指由NULL结束的字符串的前n个字节复制到dest所指的数组中
用法:char*strncpy(char*dest,char*src,intn);
说明:
如果src的前n个字节不含NULL字符,则结果不会以NULL字符结束。
如果src的长度小于n个字节,则以NULL填充dest直到复制完n个字节。
src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。举例:#include#includemain(){charbuf[4];char*s="abcdefg";strncpy(buf,s,4);printf("%s\n",buf);return0;}/*运行结果:abcd*/函数名:stpcpy
功能:拷贝一个字符串到另一个
用法:char*stpcpy(char*destin,char*source);举例:#include#includeintmain(void){charstring[10];char*str1="abcdefghi";stpcpy(string,str1);printf("%s\n",string);return0;}/*运行结果abcdefghi*/函数名:strcat
功能:字符串拼接函数
用法:char*strcat(char*destin,char*source);
举例:#include#includeintmain(void){chardestination[25];char*blank="",*c="C++",*Borland="Borland";strcpy(destination,Borland);strcat(destination,blank);strcat(destination,c);printf("%s\n",destination);return0;}/*运行结果:BorlandC++*/函数名:strcmp
功能:串比较
用法:intstrcmp(char*str1,char*str2);
看Asic码,str1>str2,返回值>0;两串相等,返回0举例:#include#includeintmain(void){char*buf1="aaa",*buf2="bbb";intptr;ptr=strcmp(buf2,buf1);if(ptr>0)printf("buffer2isgreaterthanbuffer1\n");elseif(ptr#includeintmain(void){char*buf1="BBB",*buf2="bbb";intptr;ptr=strcmpi(buf2,buf1);if(ptr>0)printf("buffer2isgreaterthanbuffer1\n");if(ptr#include#includeintmain(void){char*string1="1234567890";char*string2="747DC8";intlength;length=strcspn(string1,string2);printf("Characterwherestringsintersectisatposition%d\n",length);return0;}函数名:strdup
功能:将串拷贝到新建的位置处
用法:char*strdup(char*str);
举例:#include#include#includeintmain(void){char*dup_str,*string="abcde";dup_str=strdup(string);printf("%s\n",dup_str);free(dup_str);return0;}函数名:stricmp
功能:以大小写不敏感方式比较两个串
用法:intstricmp(char*str1,char*str2);
举例:#include#includeintmain(void){char*buf1="BBB",*buf2="bbb";intptr;ptr=stricmp(buf2,buf1);if(ptr>0)printf("buffer2isgreaterthanbuffer1\n");if(ptr字符串的指针
用法:char*strerror(interrnum);
举例:#include#includeintmain(void){char*buffer;buffer=strerror(errno);printf("Error:%s\n",buffer);return0;}函数名:strncmp
功能:串比较
用法:intstrncmp(char*str1,char*str2,intmaxlen);
举例:#include#includeintmain(void){char*buf1="aaabbb",*buf2="bbbccc",*buf3="ccc";intptr;ptr=strncmp(buf2,buf1,3);if(ptr>0)printf("buffer2isgreaterthanbuffer1\n");elseprintf("buffer2islessthanbuffer1\n");ptr=strncmp(buf2,buf3,3);if(ptr>0)printf("buffer2isgreaterthanbuffer3\n");elseprintf("buffer2islessthanbuffer3\n");return(0);}函数名:strncmpi
功能:把串中的一部分与另一串中的一部分比较,不管大小写
用法:intstrncmpi(char*str1,char*str2,intlen);举例:#include#includeintmain(void){char*buf1="BBBccc",*buf2="bbbccc";intptr;ptr=strncmpi(buf2,buf1,3);if(ptr>0)printf("buffer2isgreaterthanbuffer1\n");if(ptr#includeintmain(void){char*string="abcdefghijklmnopqrstuvwxyz";charletter='x';printf("stringbeforestrnset:%s\n",string);strnset(string,letter,13);printf("stringafterstrnset:%s\n",string);return0;}函数名:strpbrk
功能:在串中查找给定字符集中的字符
用法:char*strpbrk(char*str1,char*str2);
举例:#include#includeintmain(void){char*string1="abcdefghijklmnopqrstuvwxyz";char*string2="onm";char*ptr;ptr=strpbrk(string1,string2);if(ptr)printf("strpbrkfoundfirstcharacter:%c\n",*ptr);elseprintf("strpbrkdidn'tfindcharacterinset\n");return0;}函数名:strrev
功能:串倒转
用法:char*strrev(char*str);
举例:#include#includeintmain(void){char*forward="string";printf("Beforestrrev():%s\n",forward);strrev(forward);printf("Afterstrrev():%s\n",forward);return0;}/*运行结果:Beforestrrev():stringAfterstrrev():gnirts*/函数名:strstr
功能:在串中查找指定字符串的第一次出现
用法:char*strstr(char*str1,char*str2);
举例:#include#includeintmain(void){char*str1="BorlandInternational",*str2="nation",*ptr;ptr=strstr(str1,str2);printf("Thesubstringis:%s\n",ptr);return0;}函数名:strtod
功能:将字符串转换为double型值
用法:doublestrtod(char*str,char**endptr);
举例:#include#includeintmain(void){charinput[80],*endptr;doublevalue;printf("Enterafloatingpointnumber:");gets(input);value=strtod(input,&endptr);printf("Thestringis%sthenumberis%lf\n",input,value);return0;}函数名:strtol
功能:将串转换为长整数
用法:longstrtol(char*str,char**endptr,intbase);
举例:#include#includeintmain(void){char*string="87654321",*endptr;longlnumber;/*strtolconvertsstringtolonginteger*/lnumber=strtol(string,&endptr,10);printf("string=%slong=%ld\n",string,lnumber);return0;}函数名:strupr
功能:将串中的小写字母转换为大写字母
用法:char*strupr(char*str);
举例:#include#includeintmain(void){char*string="abcdefghijklmnopqrstuvwxyz",*ptr;/*convertsstringtouppercasecharacters*/ptr=strupr(string);printf("%s\n",ptr);return0;}