C语言程序设计课件:第6章-字符串.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《C语言程序设计课件:第6章-字符串.ppt》由用户(罗嗣辉)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 课件 字符串
- 资源描述:
-
1、第第6 6章章 字符串字符串字符串基础(概念、表示、输入输出)字符串基础(概念、表示、输入输出)字符串的基本运算字符串的基本运算字符串应用举例(数值与字符串的转换、字符串应用举例(数值与字符串的转换、单词分离)单词分离)&字符常量字符常量v定义定义: :用用单引号单引号括起来的单个括起来的单个普通字符普通字符或或转义字符转义字符. v字符常量的字符常量的值值:该字符的:该字符的ASCIIASCII码码值值转义字符及其含义:转义字符及其含义:转义字符含义nvradddtbf“xhh转义字符含义换行垂直制表回车响铃单引号3位8进制数代表的字符水平制表退格换页反斜线双引号2位16进制数代表的字符例:
2、A-101-x41-65如 A65, a97, 048 , n10如 a A ? n 101v转义字符转义字符: :反斜线后面跟一个字符或一个代码值表示反斜线后面跟一个字符或一个代码值表示6.1 6.1 字符数据字符数据v字符常量与字符串常量不同字符常量与字符串常量不同&字符串常量字符串常量v定义:用双引号定义:用双引号( () )括起来的字符序列括起来的字符序列v存储:存储:每个字符串尾每个字符串尾自动自动加一个加一个 00 作为字符串作为字符串结束标志结束标志h e l l o 0例例 字符串字符串hellohello在内存中在内存中a a 0例 aa例例 空串空串 0例: char ch
3、; ch=A; 例: char ch; ch=A; 【例例】观察下面程序的运行结果观察下面程序的运行结果,注意注意转义字符的使用转义字符的使用 #include void main( ) printf(%d,%cn,a,a); printf(%d,%cn,A+1,A+1); printf(%dn,a-A); printf(%d,%dn,1,x1); printf(%d,%cn,25,x15); printf(I am OKn );字符型变量字符型变量字符的输入与输出字符的输入与输出scanfscanf和和printfprintfscanf(%c,&ch);从键盘输入一个字符,并将输入的字符存从
4、键盘输入一个字符,并将输入的字符存放在变量放在变量ch之中。之中。printf(%c,ch);将字符型变量将字符型变量ch的在屏幕上输出。的在屏幕上输出。 字符的输入与输出字符的输入与输出getchgetch和和putchputch字符输入函数:字符输入函数:函数原型:函数原型:char getch() 或者或者 char getchar()使用方法:使用方法:ch = getch() 或者或者 ch = getchar()字符输出函数字符输出函数:函数原型:函数原型:putch(char ch) 或者或者 putchar(char ch)使用方法:使用方法:putch(ch) 或者或者 pu
5、tchar(ch)6.2 6.2 字符串字符串 字符串的存储字符串的存储 依次存储每个字符依次存储每个字符ASCII码码 例如字符串例如字符串”Strings.n” C C语言并没有为字符串提供任何专门的表示语言并没有为字符串提供任何专门的表示法,完全使用法,完全使用字符数组字符数组和和字符指针字符指针来处理来处理字符串就是一串以用字符串就是一串以用”引起来的字符引起来的字符, , C C语言自动为其添加语言自动为其添加00结束符结束符Hello China 字符表示:字符表示:Strings.n0ASCII码表示码表示:8311611410511010311546100用一维数组表示字符串用
6、一维数组表示字符串字符数组字符数组: :每个元素都是字符类型的数组每个元素都是字符类型的数组vchar str80;是字符数组,但不代表字符串是字符数组,但不代表字符串数组的最后一个元素必须是数组的最后一个元素必须是06.3 6.3 字符串的表示字符串的表示字符数组的初始化字符数组的初始化 逐个元素初始化逐个元素初始化 char str6 = C,h,i,n,a,0; 用字符串常量直接对数组初始化用字符串常量直接对数组初始化 char str11 = China; char str11 = China;必不可少的,必须自己写上去必不可少的,必须自己写上去系统会自动加上系统会自动加上 0 用指针
7、表示字符串变量用指针表示字符串变量 char *str=Hello China;只能进行整体初始化 或者或者,在需要时给字符型指针赋值:在需要时给字符型指针赋值:char *cp,str =” Hello china!”; cp=str;字符指针就是指向字符类型数据的指针字符指针就是指向字符类型数据的指针str或者或者cp=Hello China;字符数组与字符指针的区别字符数组与字符指针的区别定义和初始化方法不同定义和初始化方法不同 char *pStr = Hello China;Hello ChinapStrchar str12 = Hello China; char *pStr;pSt
8、r = Hello China;strpStr = &str0;赋值方法不同赋值方法不同 str = Hello China;Hello Chinachar str12 = Hello China; char *pStr;pStr = Hello China;数组名数组名str是地址常量是地址常量 字符指针字符指针pStr是变量是变量 字符数组与字符指针的区别字符数组与字符指针的区别 char *cp; 与与 char str20;vchar str20; str=“I love China!”; ( ) char *cp; cp=“I love China!”; ( )vcp接受键入字符串时
9、接受键入字符串时,必须必须先开辟存储空间先开辟存储空间例例 char str10; scanf(“%s”,str); ( )而而 char *cp; scanf(“%s”, cp); ( )改为改为: char *cp,str10; cp=str; scanf(“%s”,cp); ( )字符数组与字符针的区别字符数组与字符针的区别 课堂练习分别利用字符数组和字符指针的方式储存字符串”Hohai University”,并将字符串中的小写字母变成大写字母。char *pStr = Hello China;char str12 = Hello China; 6.4 6.4 字符串数组字符串数组(1
10、) 用用字符型二维数组字符型二维数组表示字符串数组表示字符串数组(2) 用用字符型指针数组字符型指针数组表示字符串数组表示字符串数组当有多个字符串时,如何处理,比如:当有多个字符串时,如何处理,比如:“MON”,“TUE”,“WED”,“THU”,“FRI”char *pStr = “MON;char str12 = “MON; 6.4.1 6.4.1 用字符型二维数组表示字符串数组用字符型二维数组表示字符串数组char astrMN;astr可以看做一个字符串数组。可以看做一个字符串数组。存储存储M个字符串,每一行就是一个字符串。个字符串,每一行就是一个字符串。每一个字符串最多可以存储每一个
11、字符串最多可以存储N-1个字符。个字符。char a74=SUN,MON,TUE,WED,THU,FRI,SAT; 定义了定义了7个字符串,每个字符串最多可以有三个有效字符。个字符串,每个字符串最多可以有三个有效字符。char b 8=well,good,middle,pass,bad; 定义了定义了5个字符串,每个字符串最多可以有个字符串,每个字符串最多可以有7个字符。个字符。6.4.26.4.2用字符型指针数组表示字符串数组用字符型指针数组表示字符串数组char *pstr3 = Wuhan, Beijing, Shanghai;astr0Wuhan00000astr1Beijing000
12、astr2Shanghai00char astr310=Wuhan, Beijing, Shanghai;pstr0Wuhan 0 pstr1Beijing 0 pstr2Shanghai0PascalBasicFortranJavaptr指针数组指针数组字符串字符串pVisual Cv二级指针与指针数组的关系二级指针与指针数组的关系 int *p; int *q = Pascal,Basic,Fortran“; l指针数组名是二级指针指针数组名是二级指针常量常量lp=q; p+i 是是qi的地址的地址l指针数组作形参,指针数组作形参,int *q 与与int *q完全等价完全等价; 但但作为
13、变量定义两者不同作为变量定义两者不同l系统只给系统只给p分配能保存一个指针值的内存区;而给分配能保存一个指针值的内存区;而给q分配分配3块内存区,每块可保存一个指针值块内存区,每块可保存一个指针值逐个输出逐个输出for (i=0; stri!=0; i+) putchar(stri);putchar(n);一般不用字符串长度控制一般不用字符串长度控制6.5 6.5 字符串的输入输出字符串的输入输出 char str10;一次性输入输出一次性输入输出scanf(%s,str); printf(%s,str);char str10;gets(str); puts(str);不能输入带空格的字符串不
14、能输入带空格的字符串可以输入带空格的字符串可以输入带空格的字符串6.5 6.5 字符串的输入输出字符串的输入输出 scanf()函数函数格式:格式:scanf(%s, str) 功能:从键盘输入一以空格或回车结束的字符串放入字符串中,功能:从键盘输入一以空格或回车结束的字符串放入字符串中,并自动加并自动加0说明:说明: 输入串长度应小于字符数组维数,输入串长度应小于字符数组维数,str可以是字符数组名,也可以是字符数组名,也可以是字符指针名可以是字符指针名。如果是字符指针名,必须先为字符指针分配。如果是字符指针名,必须先为字符指针分配空间。空间。 输入串中的前导空格忽略,中间的空格作为输入结束
15、标志输入串中的前导空格忽略,中间的空格作为输入结束标志例如:例如:char str80; scanf (%s, str);当输入:当输入:hellochina 时,时,str将是:将是:hello说明:说明: (3 3)如果利用一个)如果利用一个scanfscanf函数输入多个字符串,则函数输入多个字符串,则在输入时以空格分隔。在输入时以空格分隔。例如:例如:char strlchar strl5 5,str2str25 5,str3str35 5; ;scanf(%s%s%sscanf(%s%s%s,str1str1,str2str2,str3);str3);输入数据:输入数据:How ar
16、e you? How are you? 数组中未被赋值的元素的值自动置数组中未被赋值的元素的值自动置00。getsgets函数函数格式:格式:gets(str) 头文件:头文件:stdio.h 功能:从键盘输入一以回车结束的字符串放入字符功能:从键盘输入一以回车结束的字符串放入字符数组中,并自动加数组中,并自动加0说明:输入串长度应小于字符数组长度说明:输入串长度应小于字符数组长度例如:例如:char str80; gets (str);输入:输入:Ilovechina! str中的字符串将是:中的字符串将是:I love china!putsputs函数函数格式:格式:puts(字符串地址字
17、符串地址) 头文件:头文件:stdio.h 功能:向显示器输出字符串(输出完,自动换行)功能:向显示器输出字符串(输出完,自动换行)说明:如果是字符数组,则必须以说明:如果是字符数组,则必须以0结束结束char str = I love china! ;puts (str);puts (I love Nanjin! ); 输出结果输出结果: I love china! I love Nanjin!printf()printf()函数函数格式:格式:printf(%s, 字符串地址字符串地址) 功能:依次输出字符串中的每个字符直到遇到字符功能:依次输出字符串中的每个字符直到遇到字符0 (0不会被
18、输出)不会被输出)说明:说明:(1 1)用)用“%s”%s”格式符输出字符串时,格式符输出字符串时,printfprintf函数中的函数中的输出项是字符数组名。输出项是字符数组名。(2 2)如果数组长度大于字符串实际长度,也只输出到)如果数组长度大于字符串实际长度,也只输出到遇遇00结束。结束。(3 3)输出字符不包括结束符)输出字符不包括结束符00。(4 4)如果一个字符数组中包含一个以上)如果一个字符数组中包含一个以上00,则,则遇第一个遇第一个00时输出就结束。时输出就结束。 课堂练习课堂练习 设设char s180, s180; 分别利用分别利用scanf和和gets函数对函数对s1,
19、s2初始化,初始化, 并利用并利用printf和和puts函数输出字符串函数输出字符串s1,s2的内容的内容课堂练习课堂练习 设设char s = Hello China; 定义函数定义函数int strlength(char *str),求解字符串的长度,求解字符串的长度 设设char s110; char s2=Hello China; 定义函数定义函数void strcpy(char s1,char s2),将字符串,将字符串s2的内容拷贝到字符串的内容拷贝到字符串s1中中字符串处理库函数字符串处理库函数#include strcpy(目的字符串目的字符串,源字符串源字符串);strin
展开阅读全文