资源描述:
《字符数组与字符串处理函数.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第十二讲、字符数组与字符串处理函数教学目的1、掌握字符数组的定义、初始化、引用2、掌握字符数组的输入与输出3、掌握字符串处理函数教学内容1、字符数组的定义和使用2、字符数组的初始化3、字符串的输入和输出4、字符串处理函数5、程序举例教材分析教学重点:字符数组的输入与输出字符串处理的算法教学难点:字符串处理函数字符串处理的算法12.1字符数组的定义和使用字符数组定义的一般形式:char数组名[数组长度];例如:charc[10];说明:字符型和整型是通用的,因此定义也可改为intc[10];但应注意它们占用的存储空间不同。实际应
2、用中,可以用无符号整型数组来代替字符数组。例如:unsignedintc[10];可以代替intc[10];10个元素占10个字节在TurboC中10个整数占20个字节12.2字符数组的初始化1、用字符常量对字符数组进行初始化例如:charstr[8]={‘’,‘p’,‘r’,‘o’,‘g’,‘r’,‘a’,‘m’}或:charstr[]={‘’,‘p’,‘r’,‘o’,‘g’,‘r’,‘a’,‘m’}或:str[0]=‘’,str[1]=‘p’,str[2]=‘r’,str[3]=‘o’,str[4]=‘g’,str[5]=‘
3、r’,str[6]=‘a’,str[7]=‘m’说明:如果只给数组的一部分字符元素初始化,没有指定初值的元素默认初值为空字符(ASCII码为0的字符)。注意,空字符与空格字符(ASCII码32)不同。12.2字符数组的初始化2、用字符的ASCII码值对字符数组进行初始化(了解)例如:charstr[8]={112,114,111,103,114,97,109,0};3、用字符串(用双引号括着的字符序列)对字符数组进行初始化例如:charstr[]=“program”;该方式赋予数组8个字符,最后一个为“ ”,而charstr[
4、]={‘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】逐个字符输入/
5、输出#includemain(){inti;charstr[10];for(i=0;i<9;i++)scanf("%c",&str[i]);str[i]=' ';for(i=0;i<9;i++)printf("%c",str[i]);}12.3字符串的输入和输出str[i]=getchar();putchar(str[i]);12.3字符串的输入和输出2、字符串整体输入/输出(1)在标准输入/输出函数printf和scanf中使用%s格式描述符P127【例6-24】字符串整体输入/输出#include6、io.h>main(){inti;charstr[10];scanf(“%s”,str);printf(“%s”,str);printf(“%6s”,str);/*字符串多于6个,全部输出*/printf(“%-.6s”,str);/*只输出前6个字符,多余不输*/}str为字符数组名,代表该数组的起始地址。输入时,系统自动在每个字符串后加入结束符‘ ’。若同时输入多个字符串,则以空格或回车符分隔。例如charstr1[5],str2[5],str3[5];scanf(“%s%s%s”,str1,str2,str3
7、);输入数据:Howareyou输入数据后str1,str2,str3数组状态如下图:str1str2str3★数组名具有双重功能,除了表示名称外,还表示该数组的首地址,所以用scanf函数不用在前面加“&”;字符串只能在变量定义时初始化,不能在程序语句中赋值。How are you 12.3字符串的输入和输出12.4字符串处理函数字符串处理函数为库函数,在程序开头应加预编译命令#include以下函数参数中的str,str1,str2均为字符数组名。(1)puts(str);/*字符串输出函数puts
8、tring*/输出指定字符串。参数可以为字符串常量。输出的字符串可以包含转义字符。(2)gets(str);/*字符串输入函数getstring*/从终端输入一个字符串到字符数组,并返回字符数组的起始地址。注意:如果输入字符串有空格,则必须用gets而不能用sc