字符数组与字符串处理函数.ppt

上传人:tian****1990 文档编号:12851788 上传时间:2020-05-31 格式:PPT 页数:20 大小:350.31KB
返回 下载 相关 举报
字符数组与字符串处理函数.ppt_第1页
第1页 / 共20页
字符数组与字符串处理函数.ppt_第2页
第2页 / 共20页
字符数组与字符串处理函数.ppt_第3页
第3页 / 共20页
点击查看更多>>
资源描述
第十二讲、字符数组与字符串处理函数,教学目的,1、掌握字符数组的定义、初始化、引用2、掌握字符数组的输入与输出3、掌握字符串处理函数,教学内容,1、字符数组的定义和使用2、字符数组的初始化3、字符串的输入和输出4、字符串处理函数5、程序举例,教材分析,教学重点:字符数组的输入与输出字符串处理的算法教学难点:字符串处理函数字符串处理的算法,12.1字符数组的定义和使用,字符数组定义的一般形式:char数组名数组长度;例如:charc10;说明:字符型和整型是通用的,因此定义也可改为intc10;但应注意它们占用的存储空间不同。实际应用中,可以用无符号整型数组来代替字符数组。例如:unsignedintc10;可以代替intc10;,10个元素占10个字节,在TurboC中10个整数占20个字节,12.2字符数组的初始化,1、用字符常量对字符数组进行初始化例如:charstr8=,p,r,o,g,r,a,m或:charstr=,p,r,o,g,r,a,m或:str0=,str1=p,str2=r,str3=o,str4=g,str5=r,str6=a,str7=m说明:如果只给数组的一部分字符元素初始化,没有指定初值的元素默认初值为空字符(ASCII码为0的字符)。注意,空字符与空格字符(ASCII码32)不同。,12.2字符数组的初始化,2、用字符的ASCII码值对字符数组进行初始化(了解)例如:charstr8=112,114,111,103,114,97,109,0;3、用字符串(用双引号括着的字符序列)对字符数组进行初始化例如:charstr=“program”;该方式赋予数组8个字符,最后一个为“0”,而charstr=p,r,o,g,r,a,m;占内存7个字节。,字符串结束标志(自动加上),C语言的字符串称又0字符串,即最后一元素值为0的字符数组。,12.3字符串的输入和输出,调用scanf函数时,空格和换行符都作为字符串的分隔符而不能读入。gets函数读入由终端键盘输入的字符(包括空格符),直至读入换行符为止,但换行符并不作为串的一部分存入。1、逐个字符输入/输出(1)在标准输入/输出函数printf和scanf中使用%c格式描述符(2)使用getchar和putchar函数。,P126【例6-23】逐个字符输入/输出#includemain()inti;charstr10;for(i=0;i9;i+)scanf(%c,12.3字符串的输入和输出,stri=getchar();,putchar(stri);,12.3字符串的输入和输出,2、字符串整体输入/输出(1)在标准输入/输出函数printf和scanf中使用%s格式描述符P127【例6-24】字符串整体输入/输出#includemain()inti;charstr10;scanf(“%s”,str);printf(“%sn”,str);printf(“%6sn”,str);/*字符串多于6个,全部输出*/printf(“%-.6sn”,str);/*只输出前6个字符,多余不输*/,str为字符数组名,代表该数组的起始地址。输入时,系统自动在每个字符串后加入结束符0。若同时输入多个字符串,则以空格或回车符分隔。,例如charstr15,str25,str35;scanf(“%s%s%s”,str1,str2,str3);输入数据:Howareyou输入数据后str1,str2,str3数组状态如下图:str1str2str3数组名具有双重功能,除了表示名称外,还表示该数组的首地址,所以用scanf函数不用在前面加“输出结果:PeoplesRepublicofChina说明:str1必须足够大,连接前两个字符串后面都有一个“0”,连接时取消str1后面的“0”,只在新串最后保留一个“0”。,12.4字符串处理函数,(4)strcpy(str1,str2);/*字符串拷贝stringcopy*/将str2复制到str1中,实际上完成字符串的赋值操作。说明:(1)str1必须足够大;(2)复制时连同字符串后面的“0”一起复制到str1中;(3)不能用赋值语句将一个字符串常量或字符数组直接赋值给一个字符数组。例如:str1=“China”;str1=str2;是不合法的;(4)str1必须是数组名,str2可以是字符数组名,也可以是字符串常量。例如:charstr120;charstr2=“China”;则,strcpy(str1,str2)与strcpy(str1,“China”)作用相同。,12.4字符串处理函数,(5)strcmp(str1,str2);/*字串比较stringcompare*/比较str1和str2,若两者相同,返回函数值为0;若str1大于str2,返回函数值为一个正整数;若str1小于str2,返回函数值为一个负整数。说明:对两个字符串自左至右逐个字符比较(按ASCII码值大小比较),知道出现不同的字符或遇到“0”为止。如果,全部字符相同,则认为相等;如果出现不相同的字符,则以第一个不相同的字符为依据确定字符串的大小。,12.4字符串处理函数,(6)strlen(str);/*字符串长度stringlength*/函数值为字符串实际长度,不包括“0”。例如:charstr=“China”;printf(“%d”,strlen(str);输出结果5(7)strlwr(str);/*字符串大写转小写stringlowercase*/把str中的大写字母转换成小写字母,并存入str。str必须为字符数组,不能是字符串常量。(8)strupr(str);/*字符串小写转大写stringuppercase*/把str中小写字母转换成大写字母,并存入str。str必须为字符数组,不能是字符串常量。,chars6=CHINA;printf(%s,strlwr(s);/正确printf(%s,strlwr(CHINA);/错误为什么?,12.4字符串处理函数,P130【例6-26】.将字符数组中的字符串按逆序存放后输出#include#includemain()inti,j;chart,ch80;gets(ch);/*等待用户从键盘输入一个字符串*/puts(ch);/*显示字符串*/for(i=0,j=strlen(ch)-1;ij;i+,j-)/*字符串逆序处理*/t=chi;chi=chj;chj=t;puts(ch);/*显示字符串*/,12.5程序举例,例1统计输入字符串中字符“x”出现的次数.,#include#includeintmain()charstr100;intn=0,i=0;gets(str);/*等待用户从键盘输入一个字符串*/while(stri!=0)/*统计x在str中出现的次数*/if(stri+=x)n+;printf(“字符x出现的次数是%dn,n);,if(stri=x)n+;i+;,12.5程序举例,例2从键盘输入N个字符串(每个字符串不超过80个字符),然后把它们按由小到大的顺序排列并输出。,#defineN5#include#includevoidmain()inti;charstrN80,temp80;for(i=0;i0)/*小者交换于stri*/strcpy(temp,stri);strcpy(stri,strj);strcpy(strj,temp);printf(“排序结果:n);for(i=0;i5;i+)printf(%sn,stri);,小结,1、字符串的结束标记02、字符串的输入与输出:gets()、puts()3、字符串处理函数:strcat(),strcpy(),strcmp(),strlen()strlwr(),strupr(),
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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