字符串处理运算_第1页
字符串处理运算_第2页
字符串处理运算_第3页
字符串处理运算_第4页
字符串处理运算_第5页
已阅读5页,还剩11页未读, 继续免费阅读

下载本文档

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

文档简介

第12章字符串处理运算C语言中,字符串处理运算是常常遇见的。本章我们来学习字符串的输入、其它数据类型如何转换成字符串、相关操作函数以及字符串的输出。对于字符串的处理运算,我们可以自定义函数实现。当然,也可以通过调用库函数中包含的相关函数实现。这样使用起来可以简化我们的程序代码。本章主要从库函数调用的方式实现对字符串的处理。12.1字符串的输入字符串的输入有两种方式:逐个字符输入和整个字符串输入。本节主要讲解这两方面内容。12.1.1逐个字符输入通过逐个字符输入字符串的方式,我们用到的标准输入输出函数有scanf()和getchar()两个函数。scanf()函数我们已经在前面的章节中讲过,这里主要讲解getchar()函数。getchar()函数的基本调用形式以及说明如图12.1所示。12.1.2整个字符串输入我们也可以通过整个字符输入的方式对字符串输入。整个字符串的输入函数有scanf()和gets()两个函数。gets()函数的调用形式如图12.3所示。12.2将其它类型转换成字符串的运算其它数据类型可以转换成字符串,我们通过库函数“stdlib.h”中的几个函数来实现,如表12-1所示。实现的功能函数调用形式参数返回值将浮点数value转换成字符串ecvt(value,ndigit,&decpt,&sign);value:要转换的浮点数,输入参数

ndigit:小数点后面的位数,输入参数

decpt:表示小数点的位置,输出参数

sign:表示符号,0为正数,1为负数,输出参数返回字符串将浮点数value转换成字符串fcvt(value,ndigit,&decpt,&sign);value:要转换的浮点数,输入参数

ndigit:小数点后面的位数,输入参数

decpt:表示小数点的位置,输出参数

sign:表示符号,0为正数,1为负数,输出参数返回字符串将浮点数value转换成字符串gcvt(value,ndigit,&buf);value:被转换的值

ndigit:存储的有效数字位数buf:结果的存储位置转换后的字符串存于buf中,返回buf的指针将无符号整型value转换成字符串,radix为转换时所用基数ultoa(value,&string,radix);value:要转换的数string:字符串结果rtadix:value的基数。指向string的指针将长整型value转换成字符串并返回该字符串,radix为转换时所用基数ltoa(value,&string,radix);value::要转换的数值

string:转换后指向字符串的指针

radix:进制指向string的指针将整型value转换成字符串存入string,radix为转换时所用基数itoa(value,&string,radix);value:要转换的数值

string:转换后指向字符串的指针

radix:进制指向string的指针12.3字符串的操作12.3.1字符串的复制C语言中,我们可以把一个字符串复制到另一个字符串中,或者把一个字符串添加到另一个字符串的结尾。我们也可以指定一个字符串的n个字符复制到另一个字符串中。为了实现以上几个功能,我们需要使用到函数。并且这些函数都是被包含在“string.h”头文件中的,它们的功能调用形式如表12-2所示。12.3.1字符串的复制实现的功能函数调用形式使用说明返回值将字符串复制strcpy(dest,src);把从src地址开始且含有NULL结束符的字符串赋值到以dest开始的地址空间返回指向dest的指针strdup(s);复制字符串s返回字符串连接字符串strcat(dest,src);把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'返回指向dest的指针把字符串的前n个字符添加到一个字符串的结尾处strncat(dest,src,n);把src所指字符串的前n个字符添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'返回指向dest的指针一个字符串复制到所在的数组中stpcpy(dest,src);把src所指由NULL结束的字符串复制到dest所指的数组中返回指向dest结尾处字符(NULL)的指针将字符串的前n个字符置为字符cstrnset(src,c,n);将字符串src的前n个字符置为字符c返回指向str的指针将一个字符串中的所有字符都设为指定字符strset(s,c);将字符串s所有的字符置为字符c返回指向s的指针12.3.2字符串的比较C语言中,可以通过头文件“string.h”中的函数比较字符串的大小,如表12-3所示。实现的功能函数调用形式使用说明返回值比较两个字符串的大小strcmp(s1,s2);比较字符串s1和s2当s1<s2时,返回值<0当s1=s2时,返回值=0当s1>s2时,返回值>0stricmp(s1,s2);比较字符串s1和s2,但不区分字母的大小写当s1<s2时,返回值<0当s1=s2时,返回值=0当s1>s2时,返回值>0比较字符串s1和s2的前n个字符strncmp(s1,s2,n);比较字符串s1和s2的前n个字符如果前n个字符完全相等,返回值就=0;在前n字符比较strnicmp(s1,s2,n);比较字符串s1和s2的前maxlen个字符,但不区分字母大小写如果前n个字符完全相等,返回值就=0;在前n字符比较12.3.3字符串大小写转换字符串可以大小写转换,我们可以通过库函数中的函数实现,如表12-4所示。实现的功能函数调用形式使用说明返回值将字符串s转换为小写形式strlwr(s);将字符串s转换为小写形式(只转换s中出现的大写字母,不改变其它字符)。返回指向s的指针将字符串s转换为大写形式strupr(s);将字符串s转换为大写形式(只转换s中出现的小写字母,不改变其它字符)。返回指向s的指针12.3.4字符串的字符个数相关运算有时我们会遇到计算字符串的个数。或者检索某个字符在一个字符串中出现的次数以及记录两个字符串中均有的字符个数等。处理这些问题我们可以使用以下函数,如表12-5所示。12.3.4字符串的字符个数相关运算实现的功能函数调用形式使用说明返回值计算字符串s的长度strlen(s);计算字符串s的(unsignedint型)长度,不包括'\0'在内。返回s的长度,不包括结束符’\0’记录两个字符串的第一个出现相同的字符的位置strcspn(s1,s2);顺序在字符串s1中搜寻与s2中字符的第一个相同字符,返回这个字符在S1中第一次出现的位置。返回第一个出现的字符在s1中的下标值,亦即在s1中出现而s2中没有出现的子串的长度查询一个字符串中第一次出现,某一个字符的位置strchr(s,c);查找字符串s中首次出现字符c的位置。返回首次出现c的位置的指针,如果s中不存在c则返回NULL检测一个字符串是否包含另一个字符串strpbrk(s1,s2);依次检验字符串s1中的字符,当被检验字符在字符串s2中也包含时,则停止检验,并返回该字符位置,空字符NULL不包括在内。返回s1中第一个满足条件的字符的指针,如果没有匹配字符则返回空指针NULL查询一个字符串在另外一个字符串出现的最后一次的位置strrchr(s,c);查找一个字符c在另一个字符串str中末次出现的位置(也就是从str的右侧开始查找字符c首次出现的位置),并返回该位置。如果未能找到指定字符,那么函数将返回NULL。一个字符c在另一个字符串str中末次出现的位置对一个字符串倒序排序strrev(s);把字符串s的所有字符的顺序颠倒过来(不包括空字符NULL)。返回指向颠倒顺序后的字符串指针计算一个字符串中有几个字符属于另一个字符串strspn(s1,s2);若strspn()返回的数值为n,则代表字符串s开头连续有n个字符都是属于字符串accept内的字符。返回字符串s开头连续包含字符串accept内的字符数目找出一个字符串包含另一个字符串的位置strstr(s1,s2);找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。返回该位置的指针,如找不到,返回空指针分解字符串strtok(s1,s2);分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。返回从s开头开始的一个个被分割的串。当没有被分割的串时则返回NULL12.4字符串的输出字符串的输出同字符串的输入一样,也有两种输出方式:逐个字符输出与整个字符串输出。本节主要讲解字符串的输出。12.4.1逐个字符的输出逐个字符的输出函数包括printf()和putchar()两个函数。printf()函数我们已经讲过,这里主要学习putchar()函数对字符串的输出。putchar()函数的调用形式如图12.14所示。12.4.2整个字符串的输出整个字符串的输出函数有printf()和puts()函数。调用puts()函数的基本形式如图12.16所示。12.4.3字符串输入输出小结除了我们很熟悉的scanf()函数与printf()函数,我们这里

温馨提示

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

评论

0/150

提交评论