第09章字符串.ppt
《第09章字符串.ppt》由会员分享,可在线阅读,更多相关《第09章字符串.ppt(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1/31/20231 Program Design in C LanguagePage 第九章第九章 字符串字符串字符串的基本概念字符串的基本概念用字符数组存储和处理字符串用字符数组存储和处理字符串指向字符串的指针变量指向字符串的指针变量字符串处理函数字符串处理函数1/31/20232 Program Design in C LanguagePage9.1字符串的基本概念字符串的基本概念字符串常量字符串常量字符串的结束标志字符串的结束标志字符串的长度字符串的长度字符串的存储方式字符串的存储方式字符数组字符数组1/31/20233 Program Design in C LanguagePage
2、9.2 用字符数组存储和处理字符串字符串常量的处理是用字符数组来实现的。也字符串常量的处理是用字符数组来实现的。也就是说,无论是否定义了字符数组,对于程序就是说,无论是否定义了字符数组,对于程序中出现的字符串,系统都会在内存中开辟一个中出现的字符串,系统都会在内存中开辟一个字符数组连续存储空间来存放该字符串常量。字符数组连续存储空间来存放该字符串常量。1/31/20234 Program Design in C LanguagePage一、一、字符数组的定义字符数组的定义字符数组:用来存放字符型数据的数组字符数组:用来存放字符型数据的数组。格式:格式:char数组名数组名常量表达式常量表达式,
3、;char数组名数组名常量表达式常量表达式1常量表达式常量表达式2,注意:注意:字符数组的定义、引用、初始化遵循字符数组的定义、引用、初始化遵循“数组数组”的规定。的规定。9.2 字符数组的定义、初始化和引用 1/31/20235 Program Design in C LanguagePage在字符数组中,每一个元素只能存放一个字符。在字符数组中,每一个元素只能存放一个字符。例:例:char a10,b30;char s1020,h20100;二维字符数组,可以看作是一个字符串数组。二维字符数组,可以看作是一个字符串数组。9.2 字符数组的定义、初始化和引用 字符数组与数值型一样字符数组与数
4、值型一样,只能对数组元素逐个引用只能对数组元素逐个引用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、一维字符数组初始化、一维字符数组初始
5、化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在字符数组中,并不要求它最后的一个字符为在字符数组中,并不要求它最后的一个字符为“
6、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=”Chin
7、a!”;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”;这三种方法效果一样
8、。这三种方法效果一样。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;sc
9、anf(%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函数虽然给多个字符
10、的输入提供了简便的函数虽然给多个字符的输入提供了简便的方法,但方法,但对于有空格的字符串的输入却有限制对于有空格的字符串的输入却有限制。9.2 字符数组的输入输出 注意:注意:scanf函数参数要求的是地址,故直接用字符数函数参数要求的是地址,故直接用字符数组名进行操作。组名进行操作。字符数组名表示的是该数组的首地址,因此使字符数组名表示的是该数组的首地址,因此使用格式符用格式符%s可以实现字符串整体的输入和输出。可以实现字符串整体的输入和输出。配合配合优点优点缺点缺点输输入入%c循环结构循环结构scanf()%sscanf()将字符串整体输入将字符串整体输入不能输入带有空格的字符串不能输入带
11、有空格的字符串gets()可可以以读读入入包包含含空空格格和和TAB的的字字符串符串一次只能输入一个字符串一次只能输入一个字符串输输出出%c循环结构循环结构printf()%sprintf()将字符串整体输出将字符串整体输出可以同时输出多个字符串可以同时输出多个字符串能灵活控制是否换行能灵活控制是否换行puts()输出字符串后自动换行输出字符串后自动换行一次只能输出一个字符串一次只能输出一个字符串输出字符串后自动换行输出字符串后自动换行1/31/202315 Program Design in C LanguagePage9.3指向字符串的指针变量指向字符串的指针变量字字符符串串的的指指针针:
12、字字符符串串的的首首字字符符地地址址,也也就就是是存存放放字字符串的字符数组的首地址。符串的字符数组的首地址。字字符符串串指指针针变变量量:通通常常把把char型型指指针针变变量量称称为为字字符符串串指指针针变变量量。也也就就是是说说,指指向向字字符符串串的的指指针针变变量量等等同同于于指指向向字字符符数数组组元元素素的的指指针针变变量量,可可以以指指向向字字符符串串中中的的任任意意一个字符。一个字符。1/31/202316 Program Design in C LanguagePage9.3 字符串指针变量的定义与引用 字符串指针变量的定义和初始化字符串指针变量的定义和初始化方式一:将存放
13、字符串的字符数组名赋给字符方式一:将存放字符串的字符数组名赋给字符串指针变量,让字符串指针变量指向字符串的串指针变量,让字符串指针变量指向字符串的首字符,然后通过移动指针变量来访问字符串首字符,然后通过移动指针变量来访问字符串的其他字符。的其他字符。例如:例如:charstr=WelcometoChina!;char*p;p=str;/*等价于等价于p=&str0*/1/31/202317 Program Design in C LanguagePage9.3 字符串指针变量的定义与引用 字符串指针变量的定义和初始化字符串指针变量的定义和初始化方式二:在程序中定义一个字符串指针变量,方式二:在
14、程序中定义一个字符串指针变量,并将字符串的首地址直接赋给它,然后通过移并将字符串的首地址直接赋给它,然后通过移动指针变量来访问字符串的其他字符。动指针变量来访问字符串的其他字符。例如:例如:char*p=WelcometoChina!;等价于:等价于:char*p;p=WelcometoChina!;这里的字符串指针变量这里的字符串指针变量p指向字符串的首字符,指向字符串的首字符,即第一个字符即第一个字符W。1/31/202318 Program Design in C LanguagePage例例用字符串指针变量实现字符串操作用字符串指针变量实现字符串操作#includevoidmain()
15、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 字符串指针变量与字符数组 字符数组是由若干个元素组成,每个元素存放一字符数组是由若干个元素组成,每个元素存放一个字符;而
16、字符串指针变量存放的是字符串中某个字符;而字符串指针变量存放的是字符串中某一个字符的地址。一个字符的地址。赋值方式不同。字符数组只能对各个元素分别赋赋值方式不同。字符数组只能对各个元素分别赋值,而字符串指针变量只用赋给字符串的首地址值,而字符串指针变量只用赋给字符串的首地址就可以了。就可以了。例如,下面的赋值是例如,下面的赋值是正确正确的:的:char*str;str=WelcometoChina!;/*str是指针变量是指针变量*/下面的赋值是下面的赋值是错误错误的:的:charstr30;str=WelcometoChina!;/*str是数组名是数组名*/1/31/202320 Prog
17、ram Design in C LanguagePage9.3.2 字符串指针变量与字符数组 字符串指针变量占用的内存要少于字符数组。字符串指针变量占用的内存要少于字符数组。例如,编译系统为下面二维字符数组的定义及初始例如,编译系统为下面二维字符数组的定义及初始化分配了化分配了36个字节的内存空间:个字节的内存空间:charstr218=Hello,WelcometoChina!;为下面两个字符串指针变量的定义及初始化分配了为下面两个字符串指针变量的定义及初始化分配了24个字节的内存空间:个字节的内存空间:char*str1=Hello,*str2=WelcometoChina!;字符串指针变
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 09 字符串
限制150内