数组和数组单元的基本概念_第1页
数组和数组单元的基本概念_第2页
数组和数组单元的基本概念_第3页
数组和数组单元的基本概念_第4页
数组和数组单元的基本概念_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、数组和数组单元的基本概念一维数组二维数组定义、初始化、引用定义、初始化、引用6.4 字符数组 字符数组是用来存放字符的数组,字符数组中的一个元素存放一个字符。 6.4.1 字符数组的定义、引用、初始化字符数组的定义、引用、初始化 对字符数组赋值或数组初始化时,数据使用字符型数据或相应的ASCII码值。 6.4.2 字符串与字符型数组字符串与字符型数组 字符串(也称字符串常量)是用双引号括起来的若干有效字符序列。在C语言中,字符串可以包含字母、数字、转义字符等。 第6章 数 组 1. 使用字符串时的注意事项使用字符串时的注意事项 (1) C语言没有专门存放字符串的变量。 (2) C语言中,系统自

2、动地在每一个字符串的最后加入一个字符 0,作为字符串的结束标志。 (3) C语言中,字符型数据是指单个字符(包含转义字符),在使用时用单引号括起来。而字符串是用双引号括起来的字符序列。第6章 数 组 2. 字符数组的初始化字符数组的初始化 (1) 可以在定义数组的同时对数组中的各个元素赋初值,例如: char c5=h , e , l , l , o ; (2) 可以在定义数组的同时将字符串赋给一个一维字符型数组。 例如: char c6=hello ;第6章 数 组 6.4.3 字符数组的输入输出字符数组的输入输出 可以利用字符数组对单个字符和字符串进行输入输出操作。 1. 逐个字符输入输出

3、 用格式符%c输入或输出一个字符。 2. 字符串整串输入和输出 用%s格式符可输入、输出字符串。由于C语言中没有专门存放字符串的变量,字符串存放在一个字符型数组中,数组名表示第一个字符的首地址,故在输入或输出字符串时可直接使用数组名。第6章 数 组 例如:char c=china;printf(%S,c); 在内存中数组c的状态如图6.11所示。输出时,遇结束符0就停止输出。输出结果为:china图6.11请注意:(1) 输出字符不包括结束符0。(2) 用“%S”格式符输出字符串时,printf函数中的输出项是字符数组名,而不是数组元素名。写成下面这样是不对的: printf(%S,c0);(

4、3) 如果数组长度大于字符串实际长度,也只输出到遇0结束。如char c10=china;printf(%S,c);(4) 利用一个scanf函数输入多个字符串,则以空格分隔。例如:char strl5,Str25,Str35;scanf(%S%S%S,Str1,Str2,Str3);输入数据:How are you? 输入后Str1、Str2、Str3数组状态见图6.12。图6.126.4.4 字符串处理函数字符串处理函数 1. 字符串输入、输出函数 1) 输入一个字符串函数gets( ) gets函数一般调用格式为: gets(str) ; gets函数的作用是从终端键盘输入字符串(字符串

5、可以包括空格),直到遇到回车符为止,回车符读入后,不作为字符串的内容,系统将自动用0代替,作为字符串的结束标志。 第6章 数 组 2) 输出一个字符串函数输出一个字符串函数puts( ) puts( )函数的一般调用格式为: puts(str) ; 该函数的作用是从str指定的地址开始,依次输出存储单元中的字符,直到遇到字符串结束标志第1个 0 字符为止。第6章 数 组 2. 字符串处理函数 1) 字符串复制函数字符串复制函数strcpy( ) strcpy( )函数一般调用格式为: strcpy(str1 , str2) 功能:把str2所指向的字符串复制到str1所指的字符数组中。 2)

6、字符串连接函数字符串连接函数strcat( ) strcat( )函数一般调用格式为: strcat(str1 , str2) ; 功能:将str2所指的字符串连接到str1所指的字符串的后面,并自动覆盖str1所指的字符串的尾部字符 0。第6章 数 组 3) 求字符串长度函数求字符串长度函数strlen( ) strlen( )函数一般调用格式为: strlen(str) ; 功能:计算str为起始地址的字符串的长度(不包含字符串结束标志0),并作为函数值返回。第6章 数 组 4) 字符串比较函数字符串比较函数strcmp( ) strcmp( )函数一般调用格式为: strcmp(str1

7、 , str2) ; 功能:比较str1和str2所指向的两个字符串,并产生以下结果: str1与str2相等时,函数值为0。 str1str2时,函数值大于0。 str1str2时,函数值小于0。 字符串之间比较的方法是:从第一个字符开始,依次对str1与str2对应位置上的字符按ASCII码值的大小进行比较,直到出现第一个不相同的字符时,即由这两个字符的大小决定所在串的大小。第6章 数 组 5) strlwr(字符串字符串)Strlwr是String Lowercase (字符串小写)的缩写。函数的作用是将字符串中大写字母换成小写字母。6) struPr(字符串字符串)Strupr是Str

8、ing uppercase (字符串大写)的缩写。函数的作用是将字符串中小写字母换成大写字母。 以上介绍了常用的字符串处理函数,应当再次强调:库函数并非c语言本身的组成部分,而是人们为使用方便而编写、提供大家使用的公共函数。每个系统提供的函数数量和函数名、函数功能都不尽相同,使用时要小心,必要时查一下库函数手册。当然,有一些基本的函数(包括函数名和函数功能),不同的系统所提供的是相同的,这就为程序的通用性提供了基础。例: 由键盘输入一字符串,要求从该串中删去一字符。 main() char str150 , str250 ; char ch ; int i=0 , k=0 ; gets(str

9、1) ; printf( n delete?) ; scanf(%c , &ch) ;第6章 数 组 6.4.5 字符串数组应用举例字符串数组应用举例 for(i=0 ; str1i !=0 ; i+) if(str1i!=ch) str2i-k=str1i ; else k=k+1 ; str2i-k=0 ; printf(n%sn , str2) ; 该程序运行后,从键盘输入字符串: I am a boy 回车 屏幕显示:delete? 输入:a 输出为:I m boy 第6章 数 组 返回章目录例6.8 输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。 程序如下: #i

10、nclude main() char string81; int i,num=0,word=0; char c; getS(String); for (i=0;(c=Stringi)!=0;i+) if(c=) word=0; else if(word=0) word=1; num+; printf(There are %d wordS in the line.n,num); 运行情况如下:I am a boy.There are 4 words in the line. 程序中变量i作为循环变量,num用来统计单词个数,word作为判别是否单词的标志,若word=0表示未出现单词,如出现单词word就置成1。算法见图6.17所示。图图6.176.17 解题的思路是这样的:单词的数目可以由空格出现的次数决定(连续的若干个空格作为出现一次空格;一行开头的空格不统计在内)。如果测出某一个字符为非空格,而它的前面的字符是空格,则表示“新的单词开始了” ,此时使num(单词数)累加1。如果当前字符为非空格而其前面的字符也是非空格,则意味着仍然是原来那个单词的继续,num不应再累加1。前面一个字符是否空格可以从word的值看出来,若word=0,则表示前一个字符是空格

温馨提示

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

最新文档

评论

0/150

提交评论