C语言数组详细讲解_第1页
C语言数组详细讲解_第2页
C语言数组详细讲解_第3页
C语言数组详细讲解_第4页
C语言数组详细讲解_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

1、一、字符数组的定义一维字符数组:用于存储和处理1个字符串,其定义格式与一维数值数组一样。char str20;二维字符数组:用于同时存储和处理多个字符串,其定义格式与二维数值数组一样。char coun try1020;cou ntry:第i个字符串二.字符数组的I初始化字符数组的初始化1.可以通过为每个数组元素指定初值字符来实现。char str1O='l'; VaVm1; :' h1 ;a7p','p',y;char str =*,! am hap py");可以省略花括号,如下所示char str ="l am happ

2、y"char country1020=china" japanese" ,注意:上述这种字符数组的整体赋值只能在字符数组初始化时使用,不能用于字符数组的赋值邀组的赋值只能对1:素一一赋彳面的赋是错误的char str15;str=*'l am happy”;strcpy(str, "I am happy'*);不是用单个字符作为初值,而是用一个字符串(注意:字符串的两端是用双引号而不是单引号”括起来的)作为初值。匕,区别三、字符数组的引用字符数组的逐个字符引用,与引用数值数组元素类似.(1 )字符数组的输入除了可以通过初始化使字符数组各元

3、素得到初值外,也可以使用getchar()或scanf()函数输入字符例如:char str1O ;for(i=0; i<10; i+) scan f("%cH, &str) ;fflush(stdi n);/*清除键盘输入缓冲区*/(2 )字符数组的输出字符数组的输出,可以用putchar()或printf()函数 例如: char str10=Vc Ian guageV;for(i=0; i<10; i+)prin tf(n%cn, str)prin tf("nV);注意:逐个字符输入、输出时,要指出元素的下标,而且使用"c'格式符

4、。另外,从键盘上输入字符时,无需输入字符的定界符一一单引号;输出时,系统也不输出字符的定界符。 字符数组的整体操作案例字符数组的整体输入与输出。 /*功能:将2维字符数组进行初始化,并在屏幕上输出*/main () int i;char name59=H张三山7李四季“,”王五魁/刘六顺7赵七巧for(i=0;i<5;i+)printf(',n%st',name);/*name代表该行数组元素的首地址7)1字符串及其结束标志所谓字符串,是指若干有效字符的序列。C语言中的字符串,可以包括字母、数字、专用字符、转义字符等。c语言规定:以0 '作为字符串结束标志(0 &

5、#39;代表ASCII码为0的字符,表示一个“空操作”, 只起一个标志作用)。因此可以对字符数组采用另一种方式进行操作了一一字符数组的整体操作。注意:由于系统在存储字符串常量时,会在串尾自动加上1个结束标志,所以无需人为地再加1个。另外,由于结束标志也要在字符数组中占用一个元素的存储空间,因此在说明字符数组长度时,至少为字符串所需长度加1。2 字符数组的整体初始化字符串设置了结束标志以后,对字符数组的初始化,就可以用字符串常量来初始化字符数组。3 字符数组的整体引用(1)字符串的输入除了可以通过初始化使字符数组各元素得到初值外,也可以使用scanf()函数输入字符串。(2)字符串的输出prin

6、tf()函数,不仅可以逐个输出字符数组元素,还可以整体输出存放在字符数组中的字符串。四、常用的字符串处理函数字符串标准函数的原型在头文件stri ng.h中。1 ,输入字符串gets()函数(1)调用方式:gets(字符数组)(2)函数功能:从标准输入设备(stdi n)键盘上,读取1个字符串(可以包含空格),并将其存储到字符数组中去。(3 )使用说明1) gets。读取的字符串,其长度没有限制,编程者要保证字符数组有足够大的空间,存放输入的字符 串。2) 该函数输入的字符串中允许包含空格,而scanf()函数不允许。3) 输出字符串一一puts。函数(1)调用方式:puts(字符数组)(2)

7、函数功能:把字符数组中所存放的字符串,输出到标准输出设备中去,并用n '取代字符串的结束标志。所以用puts。函数输出字符串时,不要求另加换行符。(3)使用说明1)字符串中允许包含转义字符,输出时产生一个控制操作。2)该函数一次只能输出一个字符串,而 prin tf()函数也能用来输出字符串,且一次能输出 多个。3.字符串比较strcmp()函数(1)调用方式:int strcmp(字符串1,字符串2)其中“字符串”可以是串常量,也可以是1维字符数组。(2 )函数功能:比较两个字符串的大小。如果:字符串仁字符串2,函数返回值等于0;字符串1字符串2,函数返回值负整数;字符串1 >

8、字符串2,函数返回值正整数。(3 )使用说明1)如果一个字符串是另一个字符串从头开始的子串,则母串为大。2)不能使用关系运算符”来比较两个字符串,只能用strcmp()函数来处理。案例gets函数和strcmp函数的应用。/*功能:简单密码检测程序*/#i nclude "stdio.h"main ()char pass_str80;/* 定义字符数组passstr*/int i=0;/*检验密码*/while(1)( printfC'请输入密码n");/*输入密码*/gets(pass_str);if(strcmp(pass_str, “ passwor

9、d M )!=0)/* 令错 */prin tf(V 口令错误,按任意键继续 V);elsebreak;/*输入正确的密码,中止循环*/getch(); i+十; if(i=3) exit(O);/*输入三次错误的密码,退出程序 */)/*输入正确密码所进入的程序段*/)4. 拷贝字符串strcpy()函数(1)调用方式:strcpy(字符数组,字符串)其中“字符串”可以是串常量,也可以是字符数组。(2)函数功能:将“字符串”完整地复制到“字符数组”中,字符数组中原有内容被覆盖。 (3 )使用说明1) 字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志0' 一起复

10、制。2) 不能用赋值运算符“二”将一个字符串直接赋值给一个字符数组,只能用strcpy()函数来处理。 St仁” Hello world!M 错误5. 连接字符串strcat()函数(1)调用方式:strcat(字符数组,字符串)(2)函数功能:把“字符串”连接到“字符数组”中的字符串尾端,并存储于“字符数组”中。 “字符数组”中原来的结束标志,被“字符串”的第一个字符覆盖,而“字符串”在操作中未被修 改。(3 )使用说明1)由于没有边界检查,编程者要注意保证“字符数组”定义得足够大,以便容纳连接后的目标 字符串;否则,会因长度不够而产生问题。2) 连接前两个字符串都有结束标志0',连

11、接后"字符数组”中存储的字符串的结束标志'0被舍弃,只在目标串的最后保留一个 0。6. 求字符串长度strlen()函数(len是length的缩写)(1) 调用方式:int strlen(字符串)(2) 函数功能:求字符串(常量或字符数组)的实际长度(不包含结束标志)。7 将字符串中大写字母转换成小写strlwr()函数(1)调用方式:strlwr(字符串)(2)函数功能:将字符串中的大写字母转换成小写,其它字符(包括小写字母和非字母字符)不转 换。&将字符串中小写字母转换成大写一一strupr()函数(1)调用方式:strupr(字符串)(3) 函数功能:将字符串

12、中小写字母转换成大写,其它字符(包括大写字母和非字母字符)不转换。典型示例1、 以上函数功能自定义完成题目:写一个函数,求一个字符串的长度,在 main函数中输入字符串,并输出其长度。main ()(in t Ie n;char str20;prin tf(Hplease in put a stri ng:nM);sea nf(,'%s,str);len=len gth(str);printf("the string has %d characters.n,len);)in t Ie ngth(char p)int i=0;while(p!= 1 0 ' )+i;re

13、turn i;)“hello ”2、 字符串与整数问题编写程序,将输入的数字字符串转换成一个相应的整数。如输入字符串为“一1234”,得到整数234123412343、 求子串问题题目:计算字符串中子串出现的次数Str1 :This is a book,that is a penStr2:is# include nstring.hn# include "stdio.h"main ()char str120,str220;int sum=0,i=0,j=0;prin tf(Kplease in put two stri ngsnu);sea nf(,'%s%s",str1

温馨提示

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

评论

0/150

提交评论