版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言中String函数详解(收藏)C语言中string函数详解分类:C/C++学习2021-08-1022:1842人阅读评论(1)收藏举报PS:本文包含了大部分strings函数的说明,并附带举例说明。本来想自己整理一下的,发现已经有前辈整理过了,就转了过来。修改了原文一些源码的问题,主要是用Char*字义字符串的问题,导致程序运行时崩溃。另外自己重写了部分测试程序,使其更能满足自己测试的需要。不当之处,还请海涵。@函数原型:Char*strdup(ConstChar*s)函数功能:字符串拷贝,目的空间由该函数分配函数返回:指向拷贝后的字符串指针参数说明:SrC-待拷贝的源字符串所属文件:string.hviewplainCopytoClipboardprint?#inCludestdio.h#inCludestring.h#inCludealloC.hintmain(){Char*dup_str,*string=abCde;dup_str=strdup(string);printf(%s,dup_str);free(dup_str);return0;}@函数名称:strcpy函数原型:char*strcpy(char*str1,char*str2);函数功能:把str2指向的字符串拷贝到str1中去函数返回:返回StrL即指向str1的指针参数说明:所属文件:string.hviewplaincopytoclipboardprint?1.#includestdio.h#includestring.hintmain(){charstring[10];char*str1=abcdefghi;strcpy(string,str1);printf(thestringis:%s\n,string);return0;}@函数名称:strncpy函数原型:char*strncpy(char*dest,constchar*src,intcount)函数功能:将字符串SrC中的count个字符拷贝到字符串dest中去函数返回:指向dest的指针参数说明:dest-目的字符串,SrC-源字符串,count-拷贝的字符个数所属文件:string.hviewplaincopytoclipboardprint?#includestdio.h#includestring.hintmain(){char*src=bbbbbbbbbbbbbbbbbbbb;//20'b'schardest[50]=aaaaaaaaaaaaaaaaaaaa;//20'a'sputs(dest);strncpy(dest,src,10);puts(dest);return0;}输出:viewplaincopytoclipboardprint?aaaaaaaaaaaaaaaaaaaabbbbbbbbbbaaaaaaaaaa4.*/@函数名称:strcat函数原型:char*strcat(char*str1,char*str2);函数功能:把字符串str2接到Strl后面,市1最后的'\0'被取消函数返回:str1参数说明:所属文件:String.hviewplaincopytoclipboardprint?#includeStdio.h#includeString.hintmain(){charbuffer[80];Strcpy(buffer,Hello);Strcat(buffer,world);printf(%S\n,buffer);return0;@函数名称:strncat函数原型:char*strncat(char*dest,constchar*src,size_tmaxlen)函数功能:将字符串Src中前maxlen个字符连接到dest中函数返回:参数说明:所属文件:string.hviewplaincopytoclipboardprint?1.#includestdio.h2.#includestring.hcharbuffer[80];intmain(){strcpy(buffer,Hello);strncat(buffer,world,8);printf(%s\n,buffer);strncat(buffer,*************,4);printf(%s\n,buffer);return0;}@函数名称:strcmp函数原型:intstrcmp(char*str1,char*str2);函数功能:比较两个字符串StrLStr2.函数返回:StrIStr2,返回负数;StrI=Str2,返回0;StrIStr2,返回正数.参数说明:所属文件:String.hviewplaincopytoclipboardprint?1.#includeString.h#includeStdio.hintmain(){char*buf1=aaa,*buf2=bbb,*buf3=ccc;intptr;ptr=Strcmp(buf2,buf1);if(ptr0)printf(buffer2iSgreaterthanbuffer1\n);elSeprintf(buffer2iSleSSthanbuffer1\n);ptr=Strcmp(buf2,buf3);if(ptr0)printf(buffer2iSgreaterthanbuffer3\n);elSeprintf(buffer2iSleSSthanbuffer3\n);return0;}@函数名称:strncmp函数原型:intstrncmp(char*str1,char*str2,intcount)函数功能:对str1和str2中的前count个字符按字典顺序比较函数返回: 小于0:StrIStr2,等于0:StrI=Str2,大于0:StrIStr2参数说明:StrLStr2-待比较的字符串,count-比较的长度所属文件:String.hviewplaincopytoclipboardprint?1.#includeString.h#includeStdio.hintmain(){charStr1[]=aabbc;//charStr2[]=abbcd;//〃为使测试程序更简练,此处假定了Strncmp只返回-1,0,1三个数charreS_info[]={'','=',''};intreS;//前1个字符比较reS=Strncmp(Str1,Str2,1);printf(1:Str1%cStr2\n,reS_info[reS+1]);14.15.//前3个字符比较16.17.res=strncmp(str1,str2,3);printf(3:str1%cstr2\n,res_info[res+1]);18.}输出:viewplaincopytoclipboardprint?/****************************************1:str1=str23:str1str2*****************************************/@函数名称:strpbrk函数原型:char*strpbrk(constchar*s1,constchar*s2)函数功能:得到si中第一个“同时也出现在s2中”字符的位置指针函数返回:位置指针参数说明:所属文件:string.hviewplaincopytoclipboardprint?1.#includestdio.h#includestring.hintmain(){char*p=Findallvowels;p=strpbrk(p+1,aeiouAEIOU);while(p){printf(%s\n,p);p=strpbrk(p+1,aeiouAEIOU);}return0;}viewplaincopytoclipboardprint?1.indallvowelsallvowelsowelsels6.*/@函数名称:strcspn函数原型:intstrcspn(constchar*s1,constchar*s2)函数功能:统计si中从头开始直到第一个“来自s2中的字符”出现的长度函数返回:长度参数说明:所属文件:string.hviewplaincopytoclipboardprint?#includestdio.h#includestring.hintmain(){printf(%d\n,strcspn(abcbcadef,cba));printf(%d\n,strcspn(xxxbcadef,cba));7.printf(%d\n,strcspn(123456789,cba));return0;}viewplaincopytoclipboardprint?1./************************039@函数名称:strspn函数原型:intstrspn(constchar*s1,constchar*s2)函数功能:统计si中从头开始直到第一个“不来自s2中的字符”出现的长度函数返回:位置指针参数说明:所属文件:string.hviewplaincopytoclipboardprint?#includestdio.h#includestring.h#includealloc.hintmain(){printf(%d\n,strspn(abcbcadef,cba));printf(%d\n,strspn(xxxbcadef,cba));printf(%d\n,strspn(123456789,cba));return0;}viewplaincopytoclipboardprint?1./************************600************************/@函数名称:strchr函数原型:char*strchr(char*str,charch);函数功能:找出Str指向的字符串中第一次出现字符Ch的位置函数返回:返回指向该位置的指针,如找不到,则返回空指针参数说明:Str-待搜索的字符串,ch-查找的字符所属文件:String.hviewplaincopytoclipboardprint?1.#includeString.h#includeStdio.hintmain(){char*Str=ThiSiSaString!;charch;char*p;while(1){printf(PleaSeinput achar:);ch=getchar();p=Strchr(Str,ch);if(p)printf(%ciSthe%dcharacterof\%S\\n,ch,(int)(p-Str+1),Str);elseprintf(Notfound!\n);printf(PressESCtoquit!\n\n);if(27==getch())break;fflush(stdin);}return0;}运行结果:viewplaincopytoclipboardprint?/********************************************Pleaseinputachar:iiisthe3characterofThisisastring!PressESCtoquit!Pleaseinputachar:lNotfound!PressESCtoquit!Pleaseinputachar:ssisthe4characterofThisisastring!PressESCtoquit!13.*/@函数名称:strrchr函数原型:char*strrchr(constchar*s,intc)函数功能:得到字符串S中最后一个含有C字符的位置指针函数返回:位置指针参数说明:所属文件:String.hviewplainCopytoClipboardprint?1.#inCludeString.h#inCludeStdio.hintmain(){ 5.CharString[15];Char*ptr,C='r';StrCpy(String,ThiSiSaString);ptr=StrrChr(String,C);if(ptr)printf(TheCharaCter%CiSatpoSition:%d,C,ptr-String);elSeprintf(TheCharaCterwaSnotfound);return0;}@函数名称:strstr函数原型:char*strstr(char*str1,char*str2);函数功能:找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)函数返回:返回该位置的指针,如找不到,返回空指针参数说明:所属文件:string.hviewplaincopytoclipboardprint?1.#includestdio.h#includestring.hintmain(){char*str1=OpenWatcomC/C++,*str2=Watcom,*ptr;ptr=strstr(str1,str2);printf(Thesubstringis:%s\n,ptr);return0;}输出:Thesubstringis:WatcomC/C++@函数名称:strrev函数原型:char*strrev(char*s)函数功能:将字符串中的所有字符颠倒次序排列函数返回:指向S的指针参数说明:所属文件:String.hviewplaincopytoclipboardprint?#includeString.h#includeStdio.hintmain(){Charforward[]=String;//原文中定义为char*是不对的,指向代码段的指针内容是不可变的printf(BeforeStrrev():%S,forward);Strrev(forward);printf(AfterStrrev():%S,forward);return0;}输出:viewplaincopytoclipboardprint?/************************************BeforeStrrev():StringAfterStrrev():gnirtS@函数名称:strnset函数原型:char*strnset(char*s,intch,size_tn)函数功能:将字符串S中前n个字符设置为Ch的值函数返回:指向S的指针参数说明:所属文件:String.hviewplainCopytoClipboardprint?#inCludeStdio.h#inCludeString.hintmain(){CharString[]=aaaaaaaaaaaaaaaaaaaaaaa;Charletter='x';printf(StringbeforeStrnSet:%S\n,String);StrnSet(String,letter,10);printf(StringafterStrnSet: %S\n,String);11.return0;12.}输出:viewplainCopytoClipboardprint?/*************************************************StringbeforeStrnSet:aaaaaaaaaaaaaaaaaaaaaaaStringafterStrnSet:xxxxxxxxxxaaaaaaaaaaaaa*************************************************/@函数名称:strset函数原型:char*strset(char*s,intch)函数功能:将字符串S中所有字符设置为Ch的值函数返回:指向S的指针参数说明:所属文件:String.hviewplainCopytoClipboardprint?#inCludeStdio.h#inCludeString.hintmain(){CharString[10]=123456789;6.CharSymbol='C';7.printf(BeforeStrSet():%S,String);8.StrSet(String,Symbol);9.printf(AfterStrSet():%S,String);10.return0;11.}@函数名称:strtok函数原型:char*strtok(char*s1,constchar*s2)函数功能:分解s1字符串为用特定分隔符分隔的多个字符串(一般用于将英文句分解为单词)函数返回:字符串si中首次出现s2中的字符前的子字符串指针参数说明:s2一般设置为si中的分隔字符规定进行子调用时(即分割si的第二、三及后续子串)第一参数必须是NULL 在每一次匹配成功后,将si中分割出的子串位置替换为NULL(摘下链中第一个环),因此Si被破坏了函数会记忆指针位置以供下一次调用所属文件:string.hviewplaincopytoclipboardprint?#includestring.h#includestdio.hintmain(){char*p;char*buffer;char*delims={.,};buffer=strdup(Findwords,allofthem.);printf(%s\n,buffer);p=strtok(buffer,delims);while(p!=NULL){printf(word:%s\n,p);p=strtok(NULL,delims);}printf(%s\n,buffer);return0;}//根据测试,可以随时给StrtOk的第一个参数输入一个新的字符串,开始新字符串的分隔PS:根据测试,可以随时给Strtok的第一个参数输入一个新的字符串,开始新字符串的分隔@函数名称:Strupr函数原型:char*Strupr(char*S)函数功能:将字符串s中的字符变为大写函数返回:参数说明:所属文件:String.hviewplaincopytoclipboardprint?#includeStdio.h#includeString.hintmain(){charstring[]=abcdefghijklmnopqrstuvwxyz,*ptr;//会影响原字符串的内存,用char[]来声明ptr=strupr(string);printf(%s,ptr);return0;} @函数名称:strlwr函数原型:char*strlwr(char*s)函数功能:将字符串中的字符变为小写字符函数返回:指向S的指针参数说明:所属文件:String.hviewplaincopytoclipboardprint?#includeString.hintmain(){charStr[]=HOWTOSAY?;printf(%S,Strlwr(Str));return0;}@函数名称:strerror函数原型:char*strerror(interrnum)函数功能:得到错误信息的内容信息函数返回:错误提示信息字符串指针参数说明:errnum-错误编号所属文件:string.hviewplaincopytoclipboardprint?1.#includestdio.h#includeerrno.hintmain(){char*buffer;buffer=strerror(errno);printf(Error:%s,buffer);return0;} @函数名称:memcpy函数原型:void*memcpy(void*dest,constvoid*src,size_tn)函数功能:字符串拷贝函数返回:指向dest的指针参数说明:SrC-源字符串,n-拷贝的最大长度所属文件:string.h,mem.hviewplainCopytoClipboardprint?1.#inCludestdio.h#inCludestring.hintmain(){5.charsrc[]=******************************;chardest[]=abcdefghijlkmnopqrstuvwxyz0123456709;char*ptr;printf(destinationbeforememcpy:%s\n,dest);ptr=memcpy(dest,src,strlen(src));if(ptr)printf(destinationaftermemcpy:%s\n,dest);elseprintf(memcpyfailed);return0;}输出:viewp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026电子科技大学专职辅导员招聘10人笔试模拟试题及答案解析
- 2026广西百色兴和铝业有限公司招聘(第一批)10人笔试模拟试题及答案解析
- 经典名著教学设计小学专题教育传统文化青少年课外素质拓展
- 劳动版(C语言 第二版)教学设计中职中职专业课电子信息类71 电子与信息大类
- 2026广东江门市文旅交通投资集团有限公司招聘4人笔试模拟试题及答案解析
- 人教版地理七上第三章第1节《多变的天气》表格教学设计与反思
- 三年级下册数学教案-总复习 估算 练习课|北师大版
- 两用衫款式变化教学设计中职专业课-服装结构制图-服装设计与工艺-轻工纺织大类
- 第三十二课 每天自省五分钟教学设计小学心理健康北师大版三年级下册-北师大版
- 期末教学设计中职基础课-拓展模块-高教版-(英语)-52
- 水库维修养护实施方案
- 吉林省长春市重点名校2025年高三最后一模化学试题含解析
- 门窗制造企业管理制度汇编
- (完整版)小学1-6年级英语单词(人教版)
- 电商运营知识培训课件
- 2024年北京大学强基计划数学试卷试题真题(含答案详解)
- 聚合物基复合材料的界面1
- 五年级我的一家人500字作文【五篇】
- 《文化与人文地理学》课件
- 第五章-空中交通管理-空域教学课件
- 渠道混凝土衬砌专项施工技术方案
评论
0/150
提交评论