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

上传人:宝路 文档编号:49551430 上传时间:2018-07-30 格式:PPT 页数:20 大小:155.33KB
返回 下载 相关 举报
字符数组与字符串处理函数_第1页
第1页 / 共20页
字符数组与字符串处理函数_第2页
第2页 / 共20页
字符数组与字符串处理函数_第3页
第3页 / 共20页
字符数组与字符串处理函数_第4页
第4页 / 共20页
字符数组与字符串处理函数_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《字符数组与字符串处理函数》由会员分享,可在线阅读,更多相关《字符数组与字符串处理函数(20页珍藏版)》请在金锄头文库上搜索。

1、第十二讲、 字符数组与字符串处理函数下一页教学目的1 1、掌握字符数组的定义、初始化、引用、掌握字符数组的定义、初始化、引用2 2、掌握字符数组的输入与输出、掌握字符数组的输入与输出3 3、掌握字符串处理函数、掌握字符串处理函数下一页教学内容1、字符数组的定义和使用2、字符数组的初始化3、字符串的输入和输出4、字符串处理函数5、程序举例教材分析教学重点: l字符数组的输入与输出 l字符串处理的算法 教学难点: l字符串处理函数 l字符串处理的算法12.1 字符数组的定义和使用字符数组定义的一般形式:字符数组定义的一般形式: charchar 数组名数组名 数组长度数组长度 ;例如:例如: ch

2、ar c10;char c10;说明:说明: 字符型和整型是通用的,因此定义也可改为字符型和整型是通用的,因此定义也可改为 int c10;int c10;但应注意它们占用的存储空间不同。但应注意它们占用的存储空间不同。 实际应用中,可以用无符号整型数组来代替字符数组。实际应用中,可以用无符号整型数组来代替字符数组。 例如:例如: unsigned int c10;unsigned int c10;可以代替可以代替 intint c10; c10;1010个元素个元素 占占1010个字个字 节节在在TurboCTurboC中中 1010个整数占个整数占2020 个字节个字节下一页12.2 字符

3、数组的初始化1 1、 用字符常量对字符数组进行初始化用字符常量对字符数组进行初始化 例如:例如: char str 8= ,p,r,o,g,r,a,mchar str 8= ,p,r,o,g,r,a,m或:或: char str = ,p,r,o,g,r,a,mchar str = ,p,r,o,g,r,a,m或:或: str0= , str1=p, str2=r, str3=o, str4=g,str0= , str1=p, str2=r, str3=o, str4=g, str5=r, str6=a, str7=mstr5=r, str6=a, str7=m说明:说明:如果只给数组的一部分

4、字符元素初始化,没有指定初值的元如果只给数组的一部分字符元素初始化,没有指定初值的元 素默认初值为空字符素默认初值为空字符(ASCII(ASCII码为码为0 0的字符的字符) )。注意,。注意,空空字符与字符与空空 格格字符字符(ASCII(ASCII码码32)32)不同。不同。下一页12.2 字符数组的初始化2 2、用字符的、用字符的ASCIIASCII码值对字符数组码值对字符数组 进行初始化(了解)进行初始化(了解) 例如:例如: char str8=112,114,111,103,114,97,109,0;char str8=112,114,111,103,114,97,109,0; 3

5、 3、用字符串、用字符串( (用双引号括着的字符序列用双引号括着的字符序列) )对字符数组进行初始化对字符数组进行初始化 例如:例如: char str =“program”;char str =“program”; 该方式赋予数组该方式赋予数组8 8个字符个字符, , 最后一个为最后一个为“ “00”,”,而而 char str =char str =p,r,o,g,r,a,mp,r,o,g,r,a,m; 占内存占内存7 7个字节。个字节。字符串结束标字符串结束标 志志( (自动加上自动加上) )C C语言的字符串称又语言的字符串称又0 0字符串,即最后一元素值为字符串,即最后一元素值为0

6、0的字符数组。的字符数组。下一页12.3 字符串的输入和输出调用调用scanfscanf函数时,空格和换行符都作为字符串的分隔符而不函数时,空格和换行符都作为字符串的分隔符而不能读入。能读入。getsgets函数读入由终端键盘输入的字符函数读入由终端键盘输入的字符( (包括空格符包括空格符) ),直,直至读入换行符为止,但换行符并不作为串的一部分存入。至读入换行符为止,但换行符并不作为串的一部分存入。1 1、 逐个字符输入逐个字符输入/ /输出输出(1)(1)在标准输入在标准输入/ /输出函数输出函数printfprintf和和scanfscanf中使用中使用%c%c格式描述符格式描述符(2)

7、(2)使用使用getchargetchar和和putcharputchar函数。函数。下一页P126 P126 【例例6-236-23】 逐个字符输入逐个字符输入/ /输出输出#include main( )main( ) intint i; i;char str10;char str10;for (i=0;i main()main() intint i; i;char str10; char str10;scanfscanf (“% (“%s”,strs”,str); );printfprintf (“% (“%sn”,strsn”,str); );printfprintf (“%6sn”,

8、str); (“%6sn”,str); /* /*字符串多于字符串多于6 6个个, , 全部输出全部输出* */ /printfprintf (“%-.6sn”,str); (“%-.6sn”,str); /* /*只输出前只输出前6 6个字符,多余不输个字符,多余不输* */ / l l strstr为字符数组名,代表该数组的起为字符数组名,代表该数组的起 始地址。始地址。 l l 输入时,系统自动在每个字符串后输入时,系统自动在每个字符串后 加入结束符加入结束符 00。 l l 若同时输入多个字符串,则以空格若同时输入多个字符串,则以空格 或回车符分隔。或回车符分隔。下一页例如例如 cha

9、r str15, str25, str35;char str15, str25, str35; scanfscanf (“% (“%s%s%ss%s%s”, str1, str2, str3);”, str1, str2, str3); 输入数据:输入数据:How are youHow are you 输入数据后输入数据后str1, str2, str3 str1, str2, str3 数组状态如下图:数组状态如下图:str1str1str2str2str3str3数组名具有双重功能,除了表示名称外,还表示该数组的首数组名具有双重功能,除了表示名称外,还表示该数组的首 地址,所以用地址,所以

10、用scanfscanf函数不用在前面加函数不用在前面加“ “”, strcat(str1,str2) );输出结果:输出结果: Peoples Republic of ChinaPeoples Republic of China说明:说明:str1str1必须足够大,连接前两个字符串后面都有一个必须足够大,连接前两个字符串后面都有一个“ “00”,”, 连接时取消连接时取消str1str1后面的后面的“ “00” ”,只在新串最后保留一个,只在新串最后保留一个“ “00” ”。下一页12.4 字符串处理函数(4 4) strcpy(strcpy(str1str1,strstr2)2);/* /

11、* 字符串拷贝字符串拷贝 string copy*/string copy*/将将strstr2 2复制到复制到str1str1中,中,实际上完成字符串的赋值操作。实际上完成字符串的赋值操作。 说明说明: :(1) (1) str1str1必须足够大;必须足够大;(2) (2) 复制时连同字符串后面的复制时连同字符串后面的“ “00” ”一起复制到一起复制到str1str1中;中;(3) (3) 不能用赋值语句将一个字符串常量或字符数组直接赋值给一个不能用赋值语句将一个字符串常量或字符数组直接赋值给一个字符数组。例如:字符数组。例如: str1=“China”str1=“China”;str1

12、=str2str1=str2; ;是不合法的是不合法的; ;(4) (4) str1str1必须是数组名,必须是数组名,strstr2 2可以是字符数组名,也可以是字符串常量可以是字符数组名,也可以是字符串常量 。例如:例如:char str120char str120;char str2=“China”char str2=“China”;则则, , strcpy(str1,str2) strcpy(str1,str2) 与与 strcpy(str1,“China”) strcpy(str1,“China”) 作用相同。作用相同。下一页12.4 字符串处理函数(5 5) strcmpstrcm

13、p(str1str1, str2str2); ; /*/* 字串比较字串比较 string compare*/string compare*/比较比较str1str1和和str2str2,若两者相同,返回函数值为,若两者相同,返回函数值为0 0;若;若str1str1大大于于str2str2,返回函数值为一个正整数;,返回函数值为一个正整数; 若若str1str1小于小于str2str2, 返回函返回函数值为一个负整数。数值为一个负整数。 说明:说明:对两个字符串自左至右逐个字符比较对两个字符串自左至右逐个字符比较( (按按ASCIIASCII码值大小码值大小 比较比较) ),知道出现不同的字

14、符或遇到,知道出现不同的字符或遇到“ “00” ”为止。如果,全部字为止。如果,全部字符相同,则认为相等;如果出现不相同的字符,则以第一个符相同,则认为相等;如果出现不相同的字符,则以第一个 不相同的字符为依据确定字符串的大小。不相同的字符为依据确定字符串的大小。下一页12.4 字符串处理函数(6 6) strlen(strstrlen(str); ); /* /* 字符串长度字符串长度 string length*/string length*/函数值为字符串实际长度,不包括函数值为字符串实际长度,不包括“ “00” ” 。例如:例如:char str=“China”char str=“Ch

15、ina”;printf(“%d”,strlen(strprintf(“%d”,strlen(str);); 输出结果输出结果5 5 (7 7) strlwr(strstrlwr(str); ); /*/*字符串大写转小写字符串大写转小写 string lowercase*/string lowercase*/把把strstr中的大写字母转换成小写字母,并存入中的大写字母转换成小写字母,并存入strstr。strstr必必 须为字符数组,不能是字符串常量。须为字符数组,不能是字符串常量。 (8 8) strupr(strupr(strstr); ); /* /*字符串小写转大写字符串小写转大写 string uppercase*/string uppercase*/

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号