第6章字符数组_第1页
第6章字符数组_第2页
第6章字符数组_第3页
第6章字符数组_第4页
第6章字符数组_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、 本次课的主要内容:本次课的主要内容:1 1、字符数组的定义、字符数组的定义2 2、字符数组的初始化、字符数组的初始化3 3、字符数组与字符串常量之间的关系、字符数组与字符串常量之间的关系4 4、字符数组(字符串常量)的输入输出、字符数组(字符串常量)的输入输出5 5、字符串处理函数、字符串处理函数 6.3 字符数组和字符串一、字符数组定义 字符数组的定义方法与前面讲过的类似 二、字符数组的初始化例 char c10, ch34; 例例 char ch5=H,e,l,l,o;ch0Hello逐个字符赋值逐个字符赋值ch1ch2ch3ch41、逐个字符赋值、逐个字符赋值在内存中情况示意在内存中情

2、况示意字符是以字符是以ascll码存的码存的 例 char ch5=B,o,y;ch0Boy00初值个数小于数组长度初值个数小于数组长度ch1ch2ch3ch4int a5=1,2,3;结果:结果:a0=1 ,a1=2, a2=3 ,a3=0, a4=0对照对照 例例 char ch =a,b,c,d;ch0abcd省略数组长度省略数组长度ch1ch2ch3int a =1,2,3,4;结果:结果:a0=1 ,a1=2, a2=3 ,a3=4对照对照2、用字符串常量、用字符串常量 例例 char ch6=“Hello”; char ch6=“Hello”; char ch=“Hello”;用字

3、符串常量用字符串常量ch0Helloch1ch2ch3ch40ch5系统自动加的系统自动加的字符串结束字符串结束标记标记”0” 例例 char ch5=“Boy”;ch0Boy00用字符串常量用字符串常量ch1ch2ch3ch4char ch6=“Hello”; char ch6=“Hello”; char ch= h,e,l,l,o,0;char ch=“Hello”;数组中有数组中有6个元素。个元素。char ch=h,e,l,l,o;数组中有数组中有5个元素。个元素。ch0Helloch1ch2ch3ch40ch5示意图 例例 char f7=A,p,p,l,e, O,r,a,n,g,e

4、, G,r,a,p,e;也可以这样:也可以这样:char fruit7=“Apple”, “Orange”, “Grape”;二维字符数组初始化二维字符数组初始化f0f1f2Apple00Orange0Grape00 三、字符串以及结束标记1、字符串及其结束标志、字符串及其结束标志字符串:双引号扩起来的一串字符。字符串:双引号扩起来的一串字符。结束标志:结束标志: 0 。2、无字符串变量,用字符数组处理字符串、无字符串变量,用字符数组处理字符串 例例 “hello”共共5个字符,在内存占个字符,在内存占6个字节个字节 字符串长度字符串长度5 h e l l o 0104 101 108 108

5、 111 0内存存放字符ASCII码6.3.5、一维字符数组(字符串、一维字符数组(字符串)的输入输的输入输出出 使用函数使用函数 scanf 与与 printf 1、逐个字符输入与输出: 格式符 为: %c例 用%c void main() char str5; int i; for(i=0;i5;i+) scanf(%c, &stri); for(i=0;i5;i+) printf(%c, stri);运行结果:输入:abcde输出:abcde2、整个字符串的输入与输出 : 格式符为: %s例 用%s void main() char str15; scanf(%s, str);

6、printf(%s, str);运行结果: 输入:China 输出:China 用字符数组名用字符数组名, 不要加不要加&输入串长度输入串长度数组长度数组长度遇空格或回车结束遇空格或回车结束 自动加一个自动加一个0#include void main( ) char a5=H,e,l,l,o;printf(%s,a);例 void main( ) char a =“Hello”; printf(“%s”,a); 结果:Hello#-=* H e l l o02314结果:Hello用“%s”输出时,遇0结束例例例 字符串输入举例 H o w 0 - a r e 0 y o u ? 0

7、#include void main() char a15,b5,c5; scanf(%s%s%s,a,b,c); printf(a=%snb=%snc=%sn,a,b,c); scanf(%s,a); printf(a=%sn,a);运行情况:输入:How are you?输出:a=How b=are c=you?输入:How are you?输出:a=Howscanf中%s输入时,遇空格或回车结束s-input.c六、常用的字符串处理函数六、常用的字符串处理函数 包含在头文件包含在头文件 stdio.h1、字符串输出函数字符串输出函数 puts格式:格式:puts(字符数组字符数组名名)功

8、能:向显示器输出字符串(输出完,换行)功能:向显示器输出字符串(输出完,换行)说明:字符数组必须以说明:字符数组必须以0结束结束例例 #include void main( ) char str=“How are you?”; puts(str); /* printf(“%s”,str) ; */ 运行结果:运行结果: 输出输出: How are you ? 2、字符串输入函数、字符串输入函数 gets格式:格式:gets(字符数组字符数组名名)功能:从键盘输入一以功能:从键盘输入一以回车结束回车结束的字符串放入的字符串放入字符数组中,并自动加字符数组中,并自动加一个一个0说明:输入串长度应小

9、于字符数组长度说明:输入串长度应小于字符数组长度例例 #include void main( ) char str30; printf(“Input a string:”); gets(str); /* scanf(“%s”,str); */ puts(str); 输入输入: How are you?输出输出: How are you ? 字符串连接函数字符串连接函数 strcat字符串拷贝函数字符串拷贝函数strcpy字符串比较函数字符串比较函数 strcmp字符串长度函数字符串长度函数 strlen常用的字符串处理函数常用的字符串处理函数 包含在头文件包含在头文件 string.h3、字符

10、串连接函数、字符串连接函数 strcat格式:格式:strcat(字符数组字符数组1,字符数组字符数组2)功能:把功能:把 字符数组字符数组2 连到连到 字符数组字符数组1 后面后面 说明:说明:字符数组字符数组1必须足够大必须足够大 连接前连接前,两串均以两串均以0结束结束;连接后连接后,串串1的的0取取 消消, 新串最后加新串最后加0例例 #include void main() char a20 = Turbo; char b= C+, strcat(a , c); printf(%sn, a); 输出结果:输出结果:Turbo C+例 char str120,str220; str1=

11、“Hello!”; () str2=str1; ()4、字符串拷贝函数、字符串拷贝函数strcpy格式:格式:strcpy(字符数组字符数组1,字符串字符串2)功能:将字符串功能:将字符串2,拷贝到字符数组,拷贝到字符数组1中去中去说明:说明:字符数组字符数组1必须足够大必须足够大 拷贝时拷贝时0一同拷贝一同拷贝 不能使用赋值语句为一个字符数组赋值不能使用赋值语句为一个字符数组赋值例: #include void main() char a25; char b= “ C+, char c = Turbo; strcpy(a , c); strcat(a , b); printf(%sn, a)

12、; 输出结果: Turbo C+ 5、字符串比较函数、字符串比较函数 strcmp格式:格式:strcmp(字符串字符串1,字符串字符串2)功能:比较两个字符串功能:比较两个字符串比较规则:对两串从左向右逐个字符比较(比较规则:对两串从左向右逐个字符比较(ASCII码)码) 直到遇到不同字符或直到遇到不同字符或0为止为止返值:返回返值:返回int型整数,型整数, a. 若字符串若字符串1 字符串字符串2, 返回返回正整数正整数 c. 若字符串若字符串1= 字符串字符串2, 返回返回零零说明:说明:字符串比较不能用字符串比较不能用“= =”,必须用必须用 strcmp例如:比较:例如:比较: H

13、ello! 与与 Hell0! H e l l o ! H e l I 0 ! 例 #include #include void main() char str1 = “Hell0!”, str2 =“Hello!”; if(strcmp(str1, str2)0) printf( “Hell0! Hello!”); else if(strcmp(str1, str2)=0) printf(“Hell0!= = Hello!”) ; else printf(“Hell0! Hello!”); 输出结果:输出结果:Hell0!Hello!6、字符串长度函数、字符串长度函数 strlen 格式:格

14、式:strlen(字符数组字符数组)功能:计算字符串长度功能:计算字符串长度返值:返回字符串实际长度,返值:返回字符串实际长度,不包括不包括0在内在内例:例:#include void main()char str1 = ”Hello!, str2 = ”How are you?”; int len1,len2 , len3; len1=strlen(str1) ; len2=strlen(str2); printf(“len1=%d len2=%d”,len1,len2); 结果:结果:len1=6 len2=12应用举例应用举例例例 6.8、 输入一行字符,统计其中有多少个单词,单词之间输

15、入一行字符,统计其中有多少个单词,单词之间用空格间隔用空格间隔输入一字符串给字符数组输入一字符串给字符数组 string i=0 , num=0 , word=0当当 ( ( c=stringi ) !=0 )c= =空格空格真真真真假假假word=0word=1num=num+1i=i+1输出:输出:numword=0例如:有下面一行字符例如:有下面一行字符,由一个空格间隔。由一个空格间隔。 I am a boy. 再比如:有多个空格间再比如:有多个空格间隔隔 I am a boy.#include void main() char string81; int i , num=0 , wor

16、d=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 linen, num);例例 6.9、 有三个字符串,找出其中最大者有三个字符串,找出其中最大者定义三个一维字符数组定义三个一维字符数组 str120,str220,str320 即即 定义部分:定义部分: char str120 , str220 , str320 , str 20 ; 输入部分:

17、输入部分: scanf(“%s%s%s”,str1,str2,str3);比较部分:比较部分: if( strcmp(str1,str2)0) strcpy(str, str1); else strcpy(str,str2); if( strcmp(str3 , str) 0) strcpy(str,str3);输出部分:输出部分: printf(“n the largest string is :%sn” ,str); 三个字符串,找出其中最大者三个字符串,找出其中最大者 H o w 0 H e l l o 0 H i g h 0 str0str1str2#include #include

18、void main() char string20 , str320; int i; for(i=0;i0)strcpy(string,str0); else strcpy(string,str1); if(strcmp(str2,string)0)strcpy(string,str2); printf(nThe largest string is:n%sn,string);定义一个两维字符数组定义一个两维字符数组str320即即 3行行20列。每一行可以容纳列。每一行可以容纳20个字符。如下图:个字符。如下图:小结字符数组字符数组的定义的定义 初始化(用字符串常量初始化方法)初始化(用字符串

19、常量初始化方法) 元素的引用元素的引用 逐个输入输出:逐个输入输出:%c getchar, putchar 一次输入输出一次输入输出: %s gets, puts字符串处理函数字符串处理函数: 头文件:头文件:#include 函数:函数:strcat, strcpy, strcmp, strlen作业习题13、15在有序数组中插入一个数 如: 1,4,6,9,13,16,19,28,40,100 插入插入38后为:后为: 1,4,6,9,13,16,19,28, 38 ,40,100实验 (在有序数组中插入一个数)void main()int a11=1,4,6,9,13,16,19,28,

温馨提示

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

评论

0/150

提交评论