第13章字符串及字符串操作.ppt
《第13章字符串及字符串操作.ppt》由会员分享,可在线阅读,更多相关《第13章字符串及字符串操作.ppt(18页珍藏版)》请在三一办公上搜索。
1、第13章 字符串及字符串操作,在各种编程语言中,字符串的地位都十分重要,C语言中并没有提供“字符串”这个特定类型,而是以特殊字符数组的形式来存储和处理字符串,这种字符数组必须以空字符0结尾,因此,也将这种特定字符数组称为C风格字符串,本章讨论字符串和字符串的一些处理函数。,13.1 C风格字符串,C风格字符串是字符数组的一种特例,这个“特”字体现在“以0(空字符,null character)结尾”,如何声明创建一个C风格字符串时,如何使用C风格字符串,这是本节要解决的问题。,13.1.1 C风格字符串的声明,首先想到的方法是声明一个字符数组,而后对其中元素初始化,不过要保证最后一个元素是空字
2、符0,即:char str=I,L,o,v,e,C,H,I,N,A,0;还记得么?如果在数组声明时没有指定第1维的大小,编译器将根据初始化表达式执行决定数组的大小,对C风格字符串来说,这是种不错的方法,免得一个个字符去数。上述声明方式看上去很麻烦,要一个字母一个字母地用单引号包裹起来,还要记着最末尾的空字符0,实际上,在C语言中,还提供了另一种声明C风格字符串的方法使用字符串常量,如:char str=”I Love CHINA”;,13.1.2 C风格字符串内存中的表示,上面声明的str中,C风格字符串共有12个有效字符,但却占据了13个内存空间,编写一段代码来验证这个结论,见示例。代码 C
3、风格字符串占据的内存字节数SizeOfStr#include/*使用printf要包含的头文件*/#include void main(void)/*主函数*/char sz=I Love CHINA;/*声明一个C风格字符串*/printf(sz在内存中的大小为:%d,sizeof(sz);/*输出sz占据的内存字节数*/getch();/*等待,按任意键继续*/输出结果为:sz在内存中的大小为:13,13.2 字符数组的输入输出,请注意:本节的标题没有写“C风格字符串的输入输出”,而是说“字符数组的输入输出”,实际上,C语言允许对字符数组进行整体的输入输出和元素访问,并不会检查其末尾是否为
4、空元素,在本节学习中,读者应细心体会字符数组和C风格字符串在输入输出等方面的不同。,13.2.1 字符数组可以进行整体输入输出,普通数组不能进行整体输入输出,必须以元素为单位进行,而字符数组是个例外,来看一个例子,见示例:代码 字符串的整体输入输出StrInputOutput#include/*使用printf要包含的头文件*/#include void main(void)/*主函数*/char sz=I Love CHINA;/*声明一个C风格字符串*/printf(%sn,sz);/*对字符串进行整体输出*/printf(请重新输入一个字符串,不多于12个字符n);/*提示用户重新输入一
5、个字符串*/scanf(%s,sz);/*读取新的输入*/printf(修改后的字符串为:%sn,sz);/*整体输出新的字符串*/getch();/*等待,按任意键继续*/输出结果为:I Love CHINA请重新输入一个字符串,不多于12个字符Hello World(键盘输入)修改后的字符串为:Hello,13.2.2 使用gets函数读入整行输入,在接收输入时,空格和随后的字符都被舍弃掉了,那有没有一种方法能将空格和随后的字符一块读入呢?有,C语言提供了gets函数,见示例:代码 使用gets函数读取一整行到字符数组中FunctionGets#include/*使用printf要包含的头
6、文件*/#include void main(void)/*主函数*/char string 256;/*开辟一字符数组string*/printf(Insert your full Name:n);/*提示用户输入*/gets(string);/*使用gets函数读取输入*/printf(Your Name is:%sn,string);/*输出字符串*/getch();/*等待,按任意键继续*/输出结果为:Insert your full Name:li kuan(键盘输入)Your Name is:li kuan,13.2.3 访问字符数组中某个元素,字符数组首先是个数组,可以借助下标访
7、问其中的单个字符,前面提到:在一个C风格字符串内部不能出现空字符,否则会将一个C风格串截断,下面的示例验证了这一说法:代码 访问字符数组中的某个元素StrElement#include/*使用printf要包含的头文件*/#include void main(void)/*主函数*/char sz=I Love CHINA;/*声明一个C风格字符串*/printf(%sn,sz);/*对字符串进行整体输出*/sz5=0;/*将字符串中第6个元素置为空字符*/printf(修改后的字符串为:%sn,sz);/*整体输出新的字符串*/getch();/*等待,按任意键继续*/输出结果为:I Lov
8、e CHINA修改后的字符串为:I Lov,13.2.4 更便捷的输出使用puts函数,调用puts()函数实现字符串的输出,其调用形式为:puts(字符数组);该函数的功能是将字符数组起始地址开始的一个字符串(以0结束的字符序列)输出到终端,并将字符串结束标志0转化成n,自动输出一个换行符。举个简单的例子:char sz=InLOVE C+!;puts(sz);输出结果:ILOVE C+!,13.3 字符串处理函数,作为一种特殊的数组,字符数组所能享受的“特殊待遇”就是允许整体输入和输出,数组操作的其他限制对字符数组同样成立,如不允许使用一个数组给另一个数组赋值,不允许整体比较两个数组,不允
9、许对两个进行整体的算术操作,下列用法都是错误的:char x10,y10=”123456789”;x=”987654321”;/*错误*/x=y;/*错误*/if(x y)/*错误*/x+=y;/*错误*/如果要实现这些特定的功能,必须以数组元素,此处是字符,为基本单位来实现,举例来说,编写一个函数计算字符串中字符个数的函数,如下:int strlenOwn(const char*psz)/*const使得字符数组不被修改,指针psz可修改*/int len=0;while(*(psz+)len+;return len;,13.3.1 理解:数组名是常指针,在继续书写示例调用上述strlenO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 13 字符串 操作
链接地址:https://www.31ppt.com/p-5891705.html