欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    字符串及其操作.ppt

    • 资源ID:6268056       资源大小:218KB        全文页数:32页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    字符串及其操作.ppt

    1,第十章字符串及其操作,内容提要,本章主要包括以下几个内容:概述字符与字符串 字符数组与字符串 字符串作为函数参数应用举例,10.1 引言,字符串是C语言中最有用而且最重要的数据结构之一。printf(“Welcome to C programming”);其中,传递给函数printf的参数就是一个字符串。双引号被用作字符串的边界符号,其中可以包含除了双引号之外的任何字母、数字以及特殊字符的任意组合。,用双引号括起来的字符序列,其长度可大于1。如:“How do you do”,“CHINA”,“a”,“$123.34”等可以使用#define来定义字符串常量一个字符变量只能存放一个字符。它的定义形式如:char c1,c2;在内存中字符变量的存储形式是ASCII码注意区分和 前面章节中已经学习了字符常量、字符变量、字符串常量,到目前为止我们还没有使用过字符串变量 C语言中没有字符串变量,而是以字符数组来表示,10.2 字符与字符串,10.3 字符数组与字符串,字符数组与字符串的关系字符数组数据类型为 char 的数组char string80;字符串特殊的字符数组,字符数组的最后一个元素为0,字符串只是一种特殊的字符数组,一个新的名词或概念;不是一种新的数据类型。在C语言中 字符串有一套特殊的表示方法和处理方法。,字符数组的初始化:,1、用字符型数据逐个对数组进行初始化 char str6=C,h,i,n,a,0;2、用字符串常量直接对数组初始化 char str6=China;char str6=China;,以0结尾的字符数组,用双引号括起表示字符串 常量,C语言自动为其添加0终结符在字符串初始化时,C语言允许采用”=”将一串字符一次赋给字符数组,10.3.1 字符数组的定义与初始化,用二维数组存放字符串char str 10=Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday;,0行1行.6行,0列 1列.9列,对数组定义时,切记要给出足够长度,10.3.1 字符数组的定义与初始化,10.3.2 字符串与指针,字符串在内存中的起始地址称为字符串的指针,可以定义一个字符指针变量指向一个字符串。在语言中,既可以用字符数组表示字符串,也可用字符指针变量来表示;引用时,既可以逐个字符引用,也可以整体引用。1、逐个引用【exp10_1】#include main()char*string=”I love Beijing.”;for(;*string!=0;string+)printf(“%c”,*string);printf(“n”);,程序运行结果:I love Beijing.,程序说明:char*string=I love Beijing.;该语句定义并初始化字符指针变量string:用串常量“I love Beijing.”的地址(由系统自动开辟、存储串常量的内存块的首地址)给string赋初值。该语句也可分成如下所示的两条语句:char*string;string=I love Beijing.;注意:字符指针变量string中,仅存储串常量的地址,而串常量的内容(即字符串本身),是存储在由系统自动开辟的内存块中,并在串尾添加一个结束标志0。,10.3.2 字符串与指针,2.整体引用采取整体引用的办法,改写上例。【exp10_2】#include main()char*string=”I love Beijing.”;printf(“%sn”,string);程序说明:printf(“%sn”,string);语句通过指向字符串的指针变量string,整体引用它所指向的字符串的原理:系统首先输出string指向的第一个字符,然后使string自动加,使之指向下一个字符;重复上述过程,直至遇到字符串结束标志。,10.3.2 字符串与指针,注意:其它类型的数组,是不能用数组名来一次性输出它的全部元素的,只能逐个元素输出。例如:int array10=;.printf(%dn,array);/*这种用法非法*/.字符指针变量与字符数组之比较虽然用字符指针变量和字符数组都能实现字符串的存储和处理,但二者是有区别的,不能混为一谈。,10.3.2 字符串与指针,字符指针变量与字符数组的主要区别:(1)存储内容不同:字符指针变量中存储的是字符串的首地址,而字符数组中存储的是字符串本身(数组的每个元素存放一个字符)。(2)赋值方式不同:对字符指针变量,可采用下面的赋值语句赋值:char*pointer;pointer=This is a example.;而字符数组,虽然可以在定义时初始化,但不能用赋值语句整体赋值。下面的用法是非法的:char char_array20;char_array=This is a example.;/*非法用法*/(3)指针变量的值是可以改变的,字符指针变量也不例外;而数组名代表数组的起始地址,是一个常量,而常量是不能被改变的。,10.3.2 字符串与指针,10.3.2 字符串与指针,字符字符数组与指针变量的用法总结,字符串数组(指针数组)例如char*country3=“China”,“England”,“USA”;第一个指针country0指向“China”第二个指针country1指向“England”第三个指针country2指向“USA”注意:对比二维数组char str 10=Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday;,1、逐个输入输出字符数组for(i=0;Stri10;i+)getchar(Stri);putchar(Stri);,声明 char Str10;用于存储字符,最多10个用于存储字符串,最多9个,10.3.3 字符串的输入输出,为什么?,字符串for(i=0;Stri9;i+)scanf(%c,2、一次性输入输出scanf(%s,Str);printf(%s,Str);gets(s);puts(s);,注意:字符串含有空格、回车或Tab符号,不能用scanf(“%s”,)读入,而 gets()可以。printf(“%s”,)遇到字符数组中0 停止输出。比较scanf与gets的使用(见P141的例10-8),10.3.3 字符串的输入输出,10.3.4 常用的字符串处理函数,字符串的处理一般借助字符串处理函数。在中定义了若干专门的字符串处理函数,如:strcpy:string copystrcmp:string comparisonstrcat:string combinationstrlen:string length使用前需要加上#include,10.3.4 常用的字符串处理函数,strcpy:string copy用法:strcpy(字符数组,字符串2)原型:char*strcpy(char*dest,const char*src);用途:将字符串2拷贝到字符数组中,相当于赋值语句。例如:char str110;str2=“China”strcpy(str1,str2);字符数组1必须是写成数组名,字符数组2 可以是数组名也可以是一个字符串。又如:strcpy(str1,“china”);,10.3.4 常用的字符串处理函数,不能用赋值语句将一个字符串常量或字符数组直接赋给一个字符数组。但可以给一个字符变量或字符数组元素赋值。如下面的赋值是不合法的。char str1=“China”,str220;str2=str1;()下面的赋值是合法的。char a5,c1,c2;c1=A;c2=B;a0=C;a1=h,a2=i;a3=n;a4=a,7.4 字符数组,strcmp:string comparison 用法:strcmp(字符串1,字符串2)原型:int strcmp(const char*s1,const char*s2);用途:当出现第一对不相等的字符时,就由这两个字符决定所在字符串的大小 比较两个字符串的大小。ASCII值大的为大。零,两个串相等 返回值:正数 str1str2 负数 str1str2 注意:两个字符串不能用关系运算符比较,如下面的写法是不合法的:if(str1=str2)printf(”yes”);应写成 if(strcmp(str1,str2)=0)printf(“yes”);,10.3.4 常用的字符串处理函数,strcat:string catenate 用法:strcat(字符串1,字符串2)原型:char*strcat(char*dest,const char*src);用途:把两个字符串连接在一起,组成一个字符串;字符数组2中的字符串连接到字符数组1中的字符串后面,并删去原字符数组1后面的“0”,最后将结果存在字符数组1中。例如:char str1=“Ch”;str2=“ina”;strcat(str1,str2);结果:str1成了“China”,而str2不变。,10.3.4 常用的字符串处理函数,strlen:string length用法:strlen(字符数组(或字符串)原型:size_t strlen(const char*s);用途:测试字符串的实际长度,其中不包括0。例如:char str1=“China”;printf(“%d”,strlen(str1);结果:输出5,可以采用多种形式,如:实参和形参均为数组,均为指针等。但其本质都是一样的。参考前面章节中所掌握的关于指针的知识,可以加深理解。与数组名作函数参数一样,字符串作为函数参数时,不是单向值传递,而是把实参数组的起始地址传递给形参数组,这样两个数组共占同一段内存单元,形参的改变会导致实参的改变,这种传递方式叫“地址传送”。,10.4 字符串作为函数参数,用函数调用方式,实现字符串的复制。【exp10_4】void string_copy(char*str_from,char*str_to)int i=0;for(;(*(str_to+i)=*(str_from+i)!=0;i+);void main()char array_str120=”I am a teacher.”;char array_str220;string_copy(array_str1,array_str2);/*数组名作实参*/printf(“array_str2=%sn”,array_str2);,10.4 字符串作为函数参数,程序说明for(;(*(str_to+i)=*(str_from+i)!=0;i+);语句的执行过程为:首先将源串中的当前字符,复制到目标串中;然后判断该字符(即赋值表达式的值)是否是结束标志。如果不是,则相对位置变量i的值增1,以便复制下一个字符;如果是结束标志,则结束循环。其特点是:先复制、后判断,循环结束前,结束标志已经复制。在C语言中,用赋值运算符、而不是单独的赋值语句来实现赋值操作,能给某些处理带来很大的灵活性,该语句(实现字符串的复制)的用法就是最好的例证。,10.4.2 字符串指针作函数参数,10.5 程序举例,使用字符数组来解决猜谜问题【exp10_5】#include#define ANSWER Grantvoid main()char try40;puts(Who is buried in Grants tomb?);gets(try);while(try!=ANSWER)/进行判断 puts(No,thats wrong.Try again.);gets(try);puts(Thats right!);,该程序的问题在那里?,Who is buried in Grants tomb?TomNo,thats wrong.Try again.GrantNo,thats wrong.Try again.,10.5 程序举例,正确的程序:【exp10_5_1】#include#define ANSWER Grantvoid main()char try40;puts(Who is buried in Grants tomb?);gets(try);while(strcmp(try,ANSWER)!=0)/判断的正确方法 puts(No,thats wrong.Try again.);gets(try);puts(Thats right!);,10.5 程序举例,从键盘任意输入5个学生的姓名,编程找出并输出按字典顺序排在最前面的学生姓名 等价于求最小字符串【exp10_6】,#include#include#define ARRA_SIZE 80main()int n,num;char strARRA_SIZE,minARRA_SIZE;printf(Please enter five names:n);gets(str);strcpy(min,str);for(n=1;n5;n+)gets(str);if(strcmp(str,min)0)strcpy(min,str);printf(The min is:);puts(min);,本章小结,本章主要介绍了一种特殊的数组字符串的用法。和一般的数组不同,字符串具有不同的特点。1)关于定义和初始化字符串方法有:使用字符串常量:#define FUN Hello!使用字符数组:static char fun10=Hello!;使用字符指针:static char*fun=Hello!;使用字符串数组:static char*fruit3=Apple,pear,orange;,本章小结,2)使用输入/输出函数。输入函数主要有:scanf(),gets();请注意其中的区别。输出函数主要有:printf();puts();3)常用的字符串处理函数。主要包括:strlen();strcat();strcmp();strcpy();。4)注意空串和 之间的不同之处。5)注意char*str 和 char str 两种定义方式的异同。,作业,1、课后习题10.6 2、不使用strcat函数,编程将字符数组str1,str2连成一个新的字符数组str3。,

    注意事项

    本文(字符串及其操作.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开