第八讲 字符与字符串.doc_第1页
第八讲 字符与字符串.doc_第2页
第八讲 字符与字符串.doc_第3页
第八讲 字符与字符串.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第八讲 字符与字符串第八讲字符与字符串引言一、教学目的本讲主要介绍了C语言中关于字符和字符串的操作方法。要求大家掌握字符和字符串的输入输出方法,掌握字符串的存储特点以及常用字符串操作函数的使用,了解的二维字符串数组的使用。二、知识要点1.单个字符的输入输出(1)函数getchar()的使用(2)函数putchar()的使用2.字符数组与字符串(1)字符数组(2)字符串3.字符串的输入和输出函数(1)函数puts()的使用(2)函数gets()的使用4.字符串操作函数函数strlen()、strcpy()、strcat()、strcmp()、strlwr()、strupr()的功能5.二维字符串数组(1)二维字符串数组的初始化(2)二维字符串数组的输入输出三、边用边学8.1单个字符的输入输出C语言头文件“stdio.h”中还定义了两个专门用于单个字符输入输出的函数getchar()和putchar()。一、字符输入函数getchar()getchar()函数作用是从输入设备(如键盘)读取一个字符。函数getchar()没有参数,其一般形式为getchar( );其执行结果是从输入设备得到一个字符。可见,getchar()函数同带格式符%c的scanf()函数都可以接收一个字符,并且可以将得到的字符赋给一个字符型变量或者整型变量。但是不是所有场合二者都可以互相替换。下面我们列出了它们的不同之处:(1)getchar()一次只能接收一个字符。(2)getchar()可以接收回车字符。而scanf()将回车作为数据的间隔符或结束符。(3)getchar()接收的字符可以不赋给任何变量。二、字符输出函数putchar()putchar()函数作用是将一个字符输出到输出设备(如显示器)。它的一般形式为putchar(字符型或整型数据);函数putchar()的可以输出字符型变量、整型变量、字符型常量以及控制字符和转义字符。8.2字符数组与字符串一、字符数组如果一个数组的元素是字符型数据,则该数组为字符数组。所以字符数组的定义、引用、初始化同样遵循上一讲“数组”的规定。字符数组的赋值符合数组的有关要求,除了在定义时初始化,只能一个元素一个元素地赋值。同样将字符数组中的全部内容输出,也只能一个元素一个元素地输出。上述方式只能用于处理已知个数的字符序列,并且当字符序列发生变化时,字符数组无法伴随字符序列长度的变化而变化。可见,将一个字符序列看作是单个字符的集合的处理方式比较单一和笨拙。C语言中常将字符序列当作字符串来处理,由于字符串的结构的特殊性,它不仅具备一般单个字符的集合的所有处理方式,而且它的输入输出更为灵活,并且可以使用C语言提供的强大的字符串处理函数。所以C语言的字符串的处理方式,极大地提高了C语言处理字符序列的能力。二、字符串在C语言中,字符序列当作字符串来处理。字符串的处理是基于字符数组的。字符串在实际存储时其尾部添加了一个结束标志0。0代表ASCII码为0的字符,是一个空操作符,表示什么也不干。所以采用字符数组存放字符串,其赋值时应包含结束标志0。字符串除了具备以上字符数组的处理方式之外,还可以采用C语言提供的输入输出字符串的格式符“%s”。需要注意的是:当格式符为“%s”时,scanf()函数的地址列表是字符数组的名字,并且无需加地址符&。printf()函数中格式符对应的变量是字符数组的名字。利用格式符“%s”输入输出字符串,字符数组只要不小于字符串的个数即可。所以这是C语言中最常用的字符序列处理方法。8.3字符串的输入和输出函数在C语言提供了字符串的输入输出函数gets()和puts(),它们在头文件“stdio.h”中定义的,用于整串字符串的输入输出。一、字符串输出函数puts()puts()函数作用是将一个字符串(以0结束的字符序列)输出,其一般形式为puts(字符数组名);或puts(字符串);函数puts()的使用注意以下几个问题:1.函数puts()一次只能输出一个字符串。2.函数puts()可以输出转义字符。3.函数puts()输出字符串后自动换行。printf()函数可以同时输出多个字符串,并且能灵活控制是否换行。所以printf()函数比puts()函数更为常用。二、字符串输入函数gets()gets()函数作用是将一个字符串输入到字符数组中,其一般形式为gets(字符数组名);gets()函数同scanf()函数一样,在读入一个字符串后,系统自动在字符串后加上一个字符串结束标志0。函数gets()的使用时要注意以下几个问题:1.函数gets()只能一次输入一个字符串。2.函数gets()可以读入包含空格和TAB的全部字符,直到遇到回车为止。使用格式符“%s”的函数scanf(),以空格、TAB或回车作为一段字符串的间隔符或结束符,所以含有空格或TAB的字符串要用gets()函数输入。8.4字符串操作函数C语言提供了很多字符串操作函数,其对应的头文件为string.h。1.strlen(字符串)strlen()是测试字符串实际长度的函数,它的返回值是字符串中字符的个数(不包含0的个数)。2.strcpy(字符数组1,字符串2)strcpy()用于将字符串2复制到字符数组1中。函数strcpy()使用时注意以下几点:(1)字符数组1必须足够大,以便容纳字符串2的内容。(2)字符串2可以是字符数组名或者字符串常量。当字符串2为字符数组名时,只复制第一个0前面的内容(含0),其后内容不复制。3.strcat(字符数组1,字符串2)strcat()的作用是将字符串2的内容复制连接在字符数组1的后面,其返回值为字符数组1的地址。函数strcpy()使用时注意以下几点:(1)字符数组1不能是字符串常量,并且必须足够大,以便可以继续容纳字符串2的内容。(2)连接前字符数组1的0将被字符串2覆盖,连接后生成的新的字符串的最后保留一个0。4.strcmp(字符串1,字符串2)strcmp()的作用是比较字符串1和字符串2。两个字符串从左至右逐个字符比较(按照字符的ASCII码值的大小),直到字符不同或者遇见0为止。如果全部字符都相同,则返回值为0。如果不相同,则返回两个字符串中第一个不相同的字符的ASCII码值的差,即字符串1大于字符串2时函数值为正,否则为负。汉字同样可以作为字符串处理,可以使用strlen()、strcpy()、strcat()和strcmp()函数,注意1个汉字相当于2个字符,并且汉字比较大小是按照汉字存储在计算机中的国标码的大小。5.strlwr(字符串)strlwr()的作用是将字符串中大写字母转换成小写字母。6.strupr(字符串)strupr()的作用是将字符串中小写字母转换成大写字母。8.5二维字符串数组一、二维字符串数组的初始化二维字符串数组的初始化,可以采用二维字符数组初始化形式或者字符串初始化形式,如:char name210=J,o,h,n,0,M,a,r,r,y,0;char name210=”John”,”Marry”;char name210=”John”,”Marry”;三种方法效果一样。二、二维字符串数组的赋值和引用由于二维数组可以看作是一个特殊的一维数组,它的数组元素是一个一维数组。所以二维字符串数组可以看作是这样一个一维数组,它的元素是一个字符串。例如:char name210=”John”,”Marry”;三、二维字符串数组作为函数参数二维字符串数组的元素和数组名都可以作为函数参数,并且使用方法与二维数组的使用方法相同。作业1.编写一个函数string_change(char str ),要求实现str中的字符的互换。如”abcde”换成”edcba”。2.编写一个函数char_search(char str ,char c),如果字符串str中包含字符c则返回数值1,否则返回数值0。3.编写一个函数string_cut(char string ,char c),其功能是删除字符串中所有的字符变量c,例如char string=“abaca”; char c=a;则执行string_cut(string,c)后,string的内容变为”bc”。4.编写一个函数string_search(char str1 ,char str2 ),如果字符串str1中包含字符串2则返回数值1,否则返回数值0。5.进一步完善“学生成绩管理系统”。主菜单

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论