欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第09章字符串.ppt

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

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

    第09章字符串.ppt

    1/31/20231 Program Design in C LanguagePage 第九章第九章 字符串字符串字符串的基本概念字符串的基本概念用字符数组存储和处理字符串用字符数组存储和处理字符串指向字符串的指针变量指向字符串的指针变量字符串处理函数字符串处理函数1/31/20232 Program Design in C LanguagePage9.1字符串的基本概念字符串的基本概念字符串常量字符串常量字符串的结束标志字符串的结束标志字符串的长度字符串的长度字符串的存储方式字符串的存储方式字符数组字符数组1/31/20233 Program Design in C LanguagePage9.2 用字符数组存储和处理字符串字符串常量的处理是用字符数组来实现的。也字符串常量的处理是用字符数组来实现的。也就是说,无论是否定义了字符数组,对于程序就是说,无论是否定义了字符数组,对于程序中出现的字符串,系统都会在内存中开辟一个中出现的字符串,系统都会在内存中开辟一个字符数组连续存储空间来存放该字符串常量。字符数组连续存储空间来存放该字符串常量。1/31/20234 Program Design in C LanguagePage一、一、字符数组的定义字符数组的定义字符数组:用来存放字符型数据的数组字符数组:用来存放字符型数据的数组。格式:格式:char数组名数组名常量表达式常量表达式,;char数组名数组名常量表达式常量表达式1常量表达式常量表达式2,注意:注意:字符数组的定义、引用、初始化遵循字符数组的定义、引用、初始化遵循“数组数组”的规定。的规定。9.2 字符数组的定义、初始化和引用 1/31/20235 Program Design in C LanguagePage在字符数组中,每一个元素只能存放一个字符。在字符数组中,每一个元素只能存放一个字符。例:例:char a10,b30;char s1020,h20100;二维字符数组,可以看作是一个字符串数组。二维字符数组,可以看作是一个字符串数组。9.2 字符数组的定义、初始化和引用 字符数组与数值型一样字符数组与数值型一样,只能对数组元素逐个引用只能对数组元素逐个引用1/31/20236 Program Design in C LanguagePage二、二、字符数组的初始化字符数组的初始化字符数组的赋值要符合数组的要求,除了在定义时字符数组的赋值要符合数组的要求,除了在定义时初始化可以用字符串赋初值,其余只能一个元素一个元初始化可以用字符串赋初值,其余只能一个元素一个元素地赋值。素地赋值。1)给所有元素赋初值:)给所有元素赋初值:例例 char s17=s,t,r,i,n,g,!;char s2=s,t,r,i,n,g,!;!gnirts存储形式为:存储形式为:1、一维字符数组初始化、一维字符数组初始化9.2 字符数组的定义、初始化和引用 1/31/20237 Program Design in C LanguagePage例例chars38=s,t,r,i,n,g,!,0;chars48=string!;chars58=string!;存储形式为:存储形式为:0!gnirtsC语言中,规定了一个语言中,规定了一个“字符串结束标记字符串结束标记”,以字符,以字符0代表。代表。说明:说明:9.2 字符数组的定义、初始化和引用 1/31/20238 Program Design in C LanguagePage在字符数组中,并不要求它最后的一个字符为在字符数组中,并不要求它最后的一个字符为“0”,也可以没有也可以没有“0”。例例:chars5=“China”;也是合法的也是合法的字符串在实际存储时,系统会自动的在其尾部添加一个字符串在实际存储时,系统会自动的在其尾部添加一个结束标志结束标志0。0代表代表ASCII码为码为0的字符,是一个空操作符,表示的字符,是一个空操作符,表示什么也不干。什么也不干。9.2 字符数组的定义、初始化和引用 1/31/20239 Program Design in C LanguagePage2)给部分元素赋初值:)给部分元素赋初值:例:例:chars19=C,h,i,n,a,!;chars29=C,h,i,n,a,!,0;chars39=”China!”;chars49=“China!”;存储形式为存储形式为:000!anihC9.2 字符数组的定义、初始化和引用 1/31/202310 Program Design in C LanguagePage2、二维字符数组初始化、二维字符数组初始化二维字符串数组的初始化,可以采用二维字符数组初始二维字符串数组的初始化,可以采用二维字符数组初始化形式或者字符串初始化形式化形式或者字符串初始化形式例:例:charname210=J,o,h,n,0,M,a,r,r,y,0;charname210=”John”,”Marry”;charname210=”John”,”Marry”;这三种方法效果一样。这三种方法效果一样。9.2 字符数组的定义、初始化和引用 1/31/202311 Program Design in C LanguagePage1.利用格式符利用格式符%c逐个输入、输出字符:逐个输入、输出字符:例例:charstr10;inti;for(i=0;i9;i+)scanf(%c,&stri);for(i=0;i9;i+)printf(%c,stri);9.2 字符数组的输入输出 1/31/202312 Program Design in C LanguagePage2.利用格式符利用格式符%s,可以一次输入、输出字符串。可以一次输入、输出字符串。例例:charstr10;scanf(%s,str);printf(%sn,str);%s:遇第一个空白符(空格、遇第一个空白符(空格、Tab、回车)结束输入,回车)结束输入,遇第一个遇第一个0结束输出。结束输出。输入:输入:program输出:输出:program9.2 字符数组的输入输出 1/31/202313 Program Design in C LanguagePage例例:chars110,s215;scanf(%s%s,s1,s2);printf(%s%sn,s1,s2);输入:输入:programC输出:输出:programC输入:输入:Howareyou输出:输出:Howarescanf函数虽然给多个字符的输入提供了简便的函数虽然给多个字符的输入提供了简便的方法,但方法,但对于有空格的字符串的输入却有限制对于有空格的字符串的输入却有限制。9.2 字符数组的输入输出 注意:注意:scanf函数参数要求的是地址,故直接用字符数函数参数要求的是地址,故直接用字符数组名进行操作。组名进行操作。字符数组名表示的是该数组的首地址,因此使字符数组名表示的是该数组的首地址,因此使用格式符用格式符%s可以实现字符串整体的输入和输出。可以实现字符串整体的输入和输出。配合配合优点优点缺点缺点输输入入%c循环结构循环结构scanf()%sscanf()将字符串整体输入将字符串整体输入不能输入带有空格的字符串不能输入带有空格的字符串gets()可可以以读读入入包包含含空空格格和和TAB的的字字符串符串一次只能输入一个字符串一次只能输入一个字符串输输出出%c循环结构循环结构printf()%sprintf()将字符串整体输出将字符串整体输出可以同时输出多个字符串可以同时输出多个字符串能灵活控制是否换行能灵活控制是否换行puts()输出字符串后自动换行输出字符串后自动换行一次只能输出一个字符串一次只能输出一个字符串输出字符串后自动换行输出字符串后自动换行1/31/202315 Program Design in C LanguagePage9.3指向字符串的指针变量指向字符串的指针变量字字符符串串的的指指针针:字字符符串串的的首首字字符符地地址址,也也就就是是存存放放字字符串的字符数组的首地址。符串的字符数组的首地址。字字符符串串指指针针变变量量:通通常常把把char型型指指针针变变量量称称为为字字符符串串指指针针变变量量。也也就就是是说说,指指向向字字符符串串的的指指针针变变量量等等同同于于指指向向字字符符数数组组元元素素的的指指针针变变量量,可可以以指指向向字字符符串串中中的的任任意意一个字符。一个字符。1/31/202316 Program Design in C LanguagePage9.3 字符串指针变量的定义与引用 字符串指针变量的定义和初始化字符串指针变量的定义和初始化方式一:将存放字符串的字符数组名赋给字符方式一:将存放字符串的字符数组名赋给字符串指针变量,让字符串指针变量指向字符串的串指针变量,让字符串指针变量指向字符串的首字符,然后通过移动指针变量来访问字符串首字符,然后通过移动指针变量来访问字符串的其他字符。的其他字符。例如:例如:charstr=WelcometoChina!;char*p;p=str;/*等价于等价于p=&str0*/1/31/202317 Program Design in C LanguagePage9.3 字符串指针变量的定义与引用 字符串指针变量的定义和初始化字符串指针变量的定义和初始化方式二:在程序中定义一个字符串指针变量,方式二:在程序中定义一个字符串指针变量,并将字符串的首地址直接赋给它,然后通过移并将字符串的首地址直接赋给它,然后通过移动指针变量来访问字符串的其他字符。动指针变量来访问字符串的其他字符。例如:例如:char*p=WelcometoChina!;等价于:等价于:char*p;p=WelcometoChina!;这里的字符串指针变量这里的字符串指针变量p指向字符串的首字符,指向字符串的首字符,即第一个字符即第一个字符W。1/31/202318 Program Design in C LanguagePage例例用字符串指针变量实现字符串操作用字符串指针变量实现字符串操作#includevoidmain()char*str=WelcometoChina!;printf(%sn,str);/*整体引用字符串整体引用字符串*/for(;*str!=0;str+)printf(%c,*str);/*逐个引用字符串中的字符逐个引用字符串中的字符*/printf(n);9.3 字符串指针变量的定义与引用 程序运行结果程序运行结果:WelcometoChina!WelcometoChina!1/31/202319 Program Design in C LanguagePage9.3.2 字符串指针变量与字符数组 字符数组是由若干个元素组成,每个元素存放一字符数组是由若干个元素组成,每个元素存放一个字符;而字符串指针变量存放的是字符串中某个字符;而字符串指针变量存放的是字符串中某一个字符的地址。一个字符的地址。赋值方式不同。字符数组只能对各个元素分别赋赋值方式不同。字符数组只能对各个元素分别赋值,而字符串指针变量只用赋给字符串的首地址值,而字符串指针变量只用赋给字符串的首地址就可以了。就可以了。例如,下面的赋值是例如,下面的赋值是正确正确的:的:char*str;str=WelcometoChina!;/*str是指针变量是指针变量*/下面的赋值是下面的赋值是错误错误的:的:charstr30;str=WelcometoChina!;/*str是数组名是数组名*/1/31/202320 Program Design in C LanguagePage9.3.2 字符串指针变量与字符数组 字符串指针变量占用的内存要少于字符数组。字符串指针变量占用的内存要少于字符数组。例如,编译系统为下面二维字符数组的定义及初始例如,编译系统为下面二维字符数组的定义及初始化分配了化分配了36个字节的内存空间:个字节的内存空间:charstr218=Hello,WelcometoChina!;为下面两个字符串指针变量的定义及初始化分配了为下面两个字符串指针变量的定义及初始化分配了24个字节的内存空间:个字节的内存空间:char*str1=Hello,*str2=WelcometoChina!;字符串指针变量的值是可以改变的,而字符数组的字符串指针变量的值是可以改变的,而字符数组的数组名永远代表该数组的首地址,它的值是不会变数组名永远代表该数组的首地址,它的值是不会变化的。化的。1/31/202321 Program Design in C LanguagePage例例将字符串将字符串str1复制到字符串复制到字符串str2#includevoidmain()charstr1=Copystring,str230;char*p1=str1,*p2=str2;while(*p1!=0)*p2+=*p1+;*p2=0;printf(Stringstr2=);puts(str2);程序运行结果程序运行结果:Stringstr2=Copystring9.3.2 字符串指针变量与字符数组 1/31/202322 Program Design in C LanguagePage9.3.3 字符串指针变量作为函数参数 特点:特点:用用字字符符数数组组名名或或字字符符串串指指针针变变量量名名作作为为实实参参,向形参传递字符串的首地址;向形参传递字符串的首地址;作作为为形形参参的的字字符符数数组组或或字字符符串串指指针针变变量量本本质质上上都是字符串指针变量;都是字符串指针变量;在在被被调调用用函函数数中中可可以以改改变变字字符符串串的的内内容容,在在主主调函数中可以得到改变以后的字符串。调函数中可以得到改变以后的字符串。1/31/202323 Program Design in C LanguagePage例例连接两个字符串连接两个字符串str1和和str2,连接结果放在,连接结果放在str1中中#includevoidstrlink(char*,char*);voidmain()charstr115=Hello,str2=World!;strlink(str1,str2);printf(Stringstr1=%sn,str1);voidstrlink(char*s,char*t)while(*s!=0)s+;/*使使s指向字符串指向字符串str1的末尾的末尾*/while(*t!=0)*s+=*t+;/*将将str2中的字符逐个连接到中的字符逐个连接到str1的末尾的末尾*/*s=0;/*在在str1的末尾加上字符串结束标志的末尾加上字符串结束标志*/程序运行结果程序运行结果:Stringstr1=HelloWorld!9.3.3 字符串指针变量作为函数参数 1/31/202324 Program Design in C LanguagePage9.4.1 gets()函数:函数:1.函数函数gets()只能一次输入一个字符串。只能一次输入一个字符串。2.函数函数gets()可以读入包含空格和可以读入包含空格和TAB的全部字符,的全部字符,直到遇到直到遇到回车回车为止。为止。使用格式符使用格式符“%s”的函数的函数scanf(),以空格、以空格、TAB或回车作为一段字符串的间隔符或结束符,所以或回车作为一段字符串的间隔符或结束符,所以含有空格或含有空格或TAB的字符串要用的字符串要用gets()函数输入。函数输入。9.4 字符串处理函数 1/31/202325 Program Design in C LanguagePage例例:函数:函数gets()与与scanf()的区别的区别#includemain()charstr120,str220;gets(str1);scanf(%s,str2);printf(str1:%sn,str1);printf(str2:%sn,str2);输入:输入:programCprogramC输出:输出:str1:programCstr2:program9.4.1 gets()函数函数1/31/202326 Program Design in C LanguagePage作用:将一个字符串(以作用:将一个字符串(以0结束的字符结束的字符序列)输出。序列)输出。格式:格式:puts(字符数组名字符数组名);或或puts(字符串字符串);9.4.2 字符串输出函数字符串输出函数puts()1/31/202327 Program Design in C LanguagePage注意:注意:1.函数函数puts()一次只能输出一个字符串。一次只能输出一个字符串。2.函数函数puts()可以输出转义字符。可以输出转义字符。3.函数函数puts()输出字符串后自动换行。输出字符串后自动换行。printf()函数可以同时输出多个字符串,并且能函数可以同时输出多个字符串,并且能灵活控制是否换行。所以灵活控制是否换行。所以printf()函数比函数比puts()函数更为常用。函数更为常用。9.4.2 字符串输出函数字符串输出函数puts()1/31/202328 Program Design in C LanguagePage例例:函数:函数puts()与与printf()的区别的区别#includemain()charstr1=student,str2=teacher;puts(str1);puts(str2);printf(%s,str1);printf(%sn%s,str1,str2);1/31/202329 Program Design in C LanguagePageC语言提供了很多字符串操作函数,其对应的头语言提供了很多字符串操作函数,其对应的头文件为文件为测字符串长度函数测字符串长度函数strlen引用形式:引用形式:strlen(字符数组字符数组)作用:作用:strlen()是测试字符串实际长度的函数,是测试字符串实际长度的函数,它的返回值是字符串中字符的个数(它的返回值是字符串中字符的个数(不包含不包含00的个数的个数)。)。9.4.3 测字符串长度函数测字符串长度函数strlen1/31/202330 Program Design in C LanguagePage例:例:charstr12=“computer”;printf(“%d”,strlen(str);printf(“%d”,strlen(“computer”);输出的结果都是输出的结果都是81/31/202331 Program Design in C LanguagePage例:例:函数函数strlen()的使用。的使用。#include#includemain()inti;charstr120,str220;gets(str1);gets(str2);for(i=0;str2i!=0;i+);printf(%s:%dn,str1,strlen(str1);printf(%s:%dn,str2,i);printf(%s:%dn,“Goodluck,strlen(“Goodluck);输入:输入:GoodluckGoodluck输出输出:Goodluck:9Goodluck:9Goodluck:9这两句的功能等同于函数这两句的功能等同于函数strlen(),i返回串长返回串长1/31/202332 Program Design in C LanguagePage引用形式:引用形式:strcat(字符数组字符数组1,字符串,字符串2)作用:作用:将字符串将字符串2的内容复制连接在字符数组的内容复制连接在字符数组1的后面,其返回值为字符数组的后面,其返回值为字符数组1的地址。的地址。注意:注意:(1)字符数组)字符数组1不能是字符串常量,并且必须足不能是字符串常量,并且必须足够大,以便可以继续容纳字符串够大,以便可以继续容纳字符串2的内容。的内容。(2)连接前字符数组)连接前字符数组1的的0将被字符串将被字符串2覆覆盖,连接后生成的新的字符串的最后保留一个盖,连接后生成的新的字符串的最后保留一个0。9.4.4 字符串连接函数字符串连接函数strcat1/31/202333 Program Design in C LanguagePage#includemain()charstr112=“Good”;charstr2=“luck!”;printf(“%s”,strcat(str1,str2);例:例:函数函数strcat()的使用。的使用。其状态如下:其状态如下:输出输出:Goodluck!Good0luck!0Goodluck!0str1str2str11/31/202334 Program Design in C LanguagePage引用形式:引用形式:strcpy(字符数组字符数组1,字符串,字符串2)作用:将字符串作用:将字符串2复制到字符数组复制到字符数组1中。中。注意:注意:(1)字符数组字符数组1必须足够大,以便容纳字符串必须足够大,以便容纳字符串2的内容。的内容。(2)字符串字符串2可以是字符数组名或者字符串常可以是字符数组名或者字符串常量。当字符串量。当字符串2为字符数组名时,只复制第一个为字符数组名时,只复制第一个0前面的内容(含前面的内容(含0),其后内容不复),其后内容不复制。制。9.4.5 字符串拷贝函数字符串拷贝函数strcpy1/31/202335 Program Design in C LanguagePage例:例:函数函数strcpy()的使用。的使用。main()inti;charstr120,str2=“Goodluck;charstr320,str4=“Goodluck;strcpy(str1,str2);for(i=0;str4i!=0;i+)str3i=str4i;str3i=0;printf(str1:%ststr2:%sn,str1,str2);printf(str3:%ststr4:%sn,str3,str4);输出输出:str1:Goodluckstr2:Goodluckstr3:Goodluckstr4:Goodluck这两句的功能等同于函数这两句的功能等同于函数strcpy()1/31/202336 Program Design in C LanguagePage引用形式:引用形式:strcmp(字符串字符串1,字符串,字符串2)作用:作用:比较字符串比较字符串1和字符串和字符串2。两个字符串从左至右。两个字符串从左至右逐个字符比较(按照字符的逐个字符比较(按照字符的ASCII码值的大小),码值的大小),直到字符不同或者遇见直到字符不同或者遇见0为止。为止。如果全部字符都相同,则返回值为如果全部字符都相同,则返回值为0。如果不。如果不相同,则返回两个字符串中第一个不相同的字符的相同,则返回两个字符串中第一个不相同的字符的ASCII码值的差,即字符串码值的差,即字符串1大于字符串大于字符串2时函数值时函数值为正,否则为负。为正,否则为负。9.4.6 字符串比较函数字符串比较函数strcmp1/31/202337 Program Design in C LanguagePage例:例:函数函数strcmp()的使用。的使用。main()charstr1=abc,str2=abc;charstr3=abc,str4=abc;inti=0;while(str3i=str4i&str3i!=0)i+;i=str3i-str4i;printf(“str1&str2:%dn,strcmp(str1,str2);printf(str3&str4:%dn,i);输出输出:str1&str2:0str3&str4:0这两句的功能等同于函数这两句的功能等同于函数strcmp()1/31/202338 Program Design in C LanguagePagestrlwr(字符串字符串)strlwr()的作用是将字符串中大写字母转换成的作用是将字符串中大写字母转换成小写字母。小写字母。strupr(字符串字符串)strupr()的作用是将字符串中小写字母转换成的作用是将字符串中小写字母转换成大写字母。大写字母。9.4.7 大小写转换函数大小写转换函数1/31/202339 Program Design in C LanguagePage例:例:编写用户登录程序编写用户登录程序#includestring.hmain()charusername10,name10=zhangsan;gets(username);if(strcmp(username,name)printf(Usernamearewrong!n);elseprintf(Youareright!n);puts(username);字符数组应用实例

    注意事项

    本文(第09章字符串.ppt)为本站会员(hyn****60)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开