c语言字符串函数使用.docx_第1页
c语言字符串函数使用.docx_第2页
c语言字符串函数使用.docx_第3页
c语言字符串函数使用.docx_第4页
c语言字符串函数使用.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Strcpy:拷贝一个字符串到另一个字符串,char *strcpy(char *destin,char *source)。Strcat:字符串拼接函数,cat是catanat的缩写,char *strchr(char *destin,char *source).将source字符串拼接到destin之后,结果返回destin的指针。例:#include #include #include void main()char *destination=(char *)malloc(sizeof(char)*25);char *blank= ;char *c=c+;char *Borland=Borland;strcpy(destination,Borland);strcat(destination,blank);strcat(destination,c);puts(destination);Strchr:在一个串中查找给定字符的第一个匹配指出,char *strchr(char *str,char str).返回的是给定字符串的第一个等于给定字符的指针,如果用puts打印返回字符指针,会打印出之后的字符串,例:#include #include void main()char string15;char *ptr,c=r;strcpy(string,this is a string);ptr=strchr(string,c);if(ptr)printf(the character %c is at position:%dn,c,ptr-string);elseprintf(errorn);Strcmp:串比较函数,int strcmp(char *str1,char *str2),根据asc码比较大小,若str1大,则返回大于0的值,相等,为零,小于,则返回小于零的值。对于大写也成立,小写字母要大于相同字母的大写。例:#include #include void main()char *buf1=bbB, *buf2=bbb;int ptr;ptr=strcmp(buf1,buf2);if(ptr0)printf(%s大于%sn,buf1,buf2);else if(ptr=0)printf(%s等于%sn,buf1,buf2);else printf(%s小于%sn,buf1,buf2);Strncmp与strnicmp:两个都是比较字符串的前n个的大小,区别在于strncmp区分大小写,而strnicmp不区分大小写,int strncmp(char *str1,char *str2,int maxlen);int strnicmp(char *str1,char *str2,int maxlen)。返回值同strcmp。Strspn和strcspn:int strcspn(char *s,char *reject),strcspn()从参数s字符串的开头计算连续的字符,而这些字符都完全不在参数reject所指的字符串当中,即若strcspn返回的值为n,则代表字符串s开头连续有n个字符都不含字符串reject内的字符。其返回值为前面不相同字符串的长度,strcspn=string+counter+span。例:*str=”Linux was first developed for 386/486-based pcs.”; Strcspn(str,” ”)的返回值为5,因为只空格前不同的字符是Linux,长度为5。 Strcspn(str,”/-”)的返回值为33,因为计算出现/或-前的字符串长度,即6之前的长度。 Strcspn(str,”0123456789”)的返回值为30,因为出现数字前的字符串长度为30。Int strspn(char *s,char *accept);strspn()从参数s字符串的开头计算连续的字符,而这些字符完全都是accept所指字符串中的字符,简单的说,strspn()返回的数值为n,则代表字符串s开头连续有n个字符都死属于字符串accept内的字符。例:*str=”Linux was first developed for 386/486-based pcs.”; Strspn(str,”Linux”)的返回值为5,因为str的前5个字符都属于Linux字符串中的字符。 Strspn(str,”-”)的返回值为0。 Strcspn(str,”0123456789”)的返回值为0.Strdup:char *strdup(char *s),将字符串s复制到自动动态分配的内存当中,并返回分配的内存的指针,即strdup函数会自动调用malloc去动态分配内存空间,动态分配的内存空间如果之后不用则要用free释放掉,否则会造成内存泄露,例如:Char *s,str=”I am a good man”;Strdup(s,str);Free(s);Strdup与strcpy的区别:两者都用于字符串复制,区别在于1. Strdup不是标准的c函数,如果移植到linux会报错。2. Strcpy复制字符串时要保证复制到的字符串内存要分配。3. 一般情况使用strcpy,因为strdup移植性不好,并且strdup调用与释放空间一般不在一个模块当中,经常会忘了在哪里释放。Stricmp:以大小写不敏感方式比较两个串,int stricmp(char *str1,char *str2),其余strcmp区别在于是否区别大小写,与strnicmp区别在于是否只比较前n个字符。Strerror:通过错误的标号来获得错误信息,char *strerror(int errnum),即strerror仅仅通过错误的值将错误的文本信息显示出来,通常配合errno使用,errno在errno.h中定义,用来返回上一次出错的信息(仅仅只是数字,通过strerror()可以将数字转换为字符串形式显示出来)。Strnset:char *strnset(char *str, char ch, int maxsize),将一个串中的前n个字符都设为指定字符,strset则是把所有字符都设为指定字符。注意,在定义*str时不能用char *str=”fsdfsadfsad”,因为此时系统先分配常量字符串”fsdfsadfsad”,再定义一个指针指向该常量的首地址,常量是不可以修改的,只能读取,因此不行,例如:#include #include void main()/char *str=asdfsdgsdfsdfe;char str=asdfsfsdfsdfsd;char ch=s;strnset(str,ch,8);puts(str);Strpbrk:string pointer break,char *strpbrk(char *str1,char *str2);比较字符串str1和str2是否有相同的字符串,若有,返回该字符在str1的位置指针。例:*str1=”whatever is worth doing is worth doing well”*str2=“go to church”Strpbrk(str1,str2)结果会返回str1的whatever的h字符串的指针。因为w不在str2当中。Strrchr:char *strrchr(char *str,char s),返回最后一在字符串str当中出现字符s的指针,例: *str=”whatever is worth doing is worth doing well”Ch=oStrrchr(str,ch)会返回str字符串中o的指针,打印出来会是oing well。Strrev:char *strrev(char *str),将字符串str倒转,并返回倒转后的指针。例:Char *str=”pain past is pleasure”Strrev(str)返回打印的结果为erusaelp sit sap niapStrstr:char *strstr(char *str1,char *str2),在字符串str1中查找str2字符串第一次出现的位置指针(指向str1字符串某个字符的指针),例#include #include void main()char *str1=happiness is a way station between too much and too little;char *str2=way;char *str=strstr(str1,str2);puts(str);打印结果为way station between too much and too littleStrtod:double strtod(char *str,char *endptr);将str字符串转为double类型,strtod()会扫描参数str,跳过前面的空白字符(例如空格,tab缩进),直到遇到正负号或者数字才开始做转换(如果前面有字母或者其他非空白字符,则停止)。转换开始后直到出现非数字或字符串结束符才结束转换(字母下划线等等),并将结果返回,str字符串里面可以包含正负号,小数点或e来表示指数部分,如123.456或123e-2.若endptr不为NULL,则将不符合条件的终止指针由endptr返回,若为NULL,则表示该参数无效,或不使用该参数。例:#include #include #include void main()char *str=12345.123 122.443 134.43;char *pend;double d1=strtod(str,&pend);double d2=strtod(pend,&pend);double d3=strtod(pend,NULL);printf(%fn,d1);printf(%fn,d2);printf(%fn,d3);可以看出来其主要作用是将输入一串小数,以空格分隔,用strtod可以将几个小数转为double类型的数据进行比较。 Strtok:char *strtok(char *str1,char *str2),查找由第二个串指定的分隔符分隔开的单词,例:#include #include void main()char a=if i had a single flower for every time i think about you ,i could walk forever in my garden,by lee.;char *p;p=strtok(a,);puts(p);p=strtok(NULL,);puts(p);p=strtok(NULL,.);puts(p);当第一个使用strtok(a,”,”);后面再用时将第一个参数设为NULL,并且后续再调用时也用NULL。Strtol:long int strtol(const char *nptr, char *endptr, int base),函数strtol根据base取值236之间,base取2时,合法字符为0、1,此时会从头扫描,略过前面的空符,从第一个正负号或者0,1开始,直到扫描到第一个非法字符为止,将其转换为十进制long型返回,如果endptr不为NULL,则将后续非法字符地址存入endptr中,同理base取8,10,16一样。例:#include #include void main()char p= 1243424safd;char *endptr;long num;num=strtol(p,&endptr,10);printf(%dn,num);注意strtol是stdlib.h头文件里面的。Strupr,strlwer:分别是string to upper和string to lower的缩写,char *strupr(char *str);char *strlwr(char *str);功能是将串中的小写字母转为大写字母,其返回的是指向str的指针,即直接修改str里面的内容,例:#include #include void main()char s=Do NOt crY becaUsE iT is ovEr, sMilE becaUSE iT hAPpened.;/char *p=strupr(s);/char *q=strlwr(s);/puts(p);/puts(q);strupr(s);puts(s);如果执行被注释的语句,打印出来的p和q是一样的,因为p和q的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论