新编-C课件语言第09讲.ppt

上传人(卖家):三亚风情 文档编号:3321439 上传时间:2022-08-19 格式:PPT 页数:39 大小:368.01KB
下载 相关 举报
新编-C课件语言第09讲.ppt_第1页
第1页 / 共39页
新编-C课件语言第09讲.ppt_第2页
第2页 / 共39页
新编-C课件语言第09讲.ppt_第3页
第3页 / 共39页
新编-C课件语言第09讲.ppt_第4页
第4页 / 共39页
新编-C课件语言第09讲.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

1、2022-8-131 Program Design in C LanguagePage第九章第九章 字符串字符串 字符数组字符数组指向字符串的指针变量指向字符串的指针变量字符串处理函数字符串处理函数2022-8-132 Program Design in C LanguagePage一、一、字符数组的定义字符数组的定义字符数组:用来存放字符型数据的数组。字符数组:用来存放字符型数据的数组。格式:格式:char 数组名数组名常量表达式常量表达式,;char 数组名数组名常量表达式常量表达式1常量表达式常量表达式2,注意:注意:字符数组的定义、引用、初始化遵循字符数组的定义、引用、初始化遵循“数组

2、数组”的规定。的规定。9.2.1 字符数组的定义、初始化和引用 2022-8-133 Program Design in C LanguagePage在字符数组中,每一个元素只能存放一个字符。在字符数组中,每一个元素只能存放一个字符。例:例:char a10,b30;char s1020,h20100;二维字符数组,可以看作是一个字符串数组。二维字符数组,可以看作是一个字符串数组。9.2.2 字符数组的定义、初始化和引用 2022-8-134 Program Design in C LanguagePage二、二、字符数组的初始化字符数组的初始化 字符数组的赋值要符合数组的要求,除了在定义时字

3、符数组的赋值要符合数组的要求,除了在定义时初始化可以用字符串赋初值,其余只能一个元素一个元初始化可以用字符串赋初值,其余只能一个元素一个元素地赋值。素地赋值。1)给所有元素赋初值:)给所有元素赋初值:例例 char s17=s,t,r,i,n,g,!;char s2=s,t,r,i,n,g,!;!gnirts存储形式为:存储形式为:1、一维字符数组初始化、一维字符数组初始化9.2.3 字符数组的定义、初始化和引用 2022-8-135 Program Design in C LanguagePage例例 char s38=s,t,r,i,n,g,!,0;char s48=string!;cha

4、r s58=string!;存储形式为:存储形式为:0!gnirtsC语言中,规定了一个语言中,规定了一个“字符串结束标记字符串结束标记”,以字,以字符符0代表。代表。说明:说明:9.2.3 字符数组的定义、初始化和引用 2022-8-136 Program Design in C LanguagePage在字符数组中,并不要求它最后的一个字符为在字符数组中,并不要求它最后的一个字符为“0”,也可以没有也可以没有“0”。例例:char s5=“China”;也是合法的也是合法的字符串在实际存储时,系统会自动的在其尾部添加一个字符串在实际存储时,系统会自动的在其尾部添加一个结束标志结束标志0。0

5、代表代表ASCII码为码为0的字符,是一个空操作符,表示什的字符,是一个空操作符,表示什么也不干。么也不干。9.2.3 字符数组的定义、初始化和引用 2022-8-137 Program Design in C LanguagePage2)给部分元素赋初值:)给部分元素赋初值:例:例:char s19=C,h,i,n,a,!;char s29=C,h,i,n,a,!,0;char s39=”China!”;char s49=“China!”;存储形式为存储形式为:000!anihC9.2.3 字符数组的定义、初始化和引用 2022-8-138 Program Design in C Langu

6、agePage2、二维字符数组初始化、二维字符数组初始化二维字符串数组的初始化,可以采用二维字符数组初始二维字符串数组的初始化,可以采用二维字符数组初始化形式或者字符串初始化形式化形式或者字符串初始化形式例:例:char name210=J,o,h,n,0,M,a,r,r,y,0;char name210=”John”,”Marry”;char name210=”John”,”Marry”;这三种方法效果一样。这三种方法效果一样。9.2.3 字符数组的定义、初始化和引用 2022-8-139 Program Design in C LanguagePage1.利用格式符利用格式符%c逐个输入、

7、输出字符:逐个输入、输出字符:例例:char str10;int i;for(i=0;i9;i+)scanf(%c,&stri);for(i=0;i9;i+)printf(%c,stri);9.2.4 字符数组的输入输出 2022-8-1310 Program Design in C LanguagePage2.利用格式符利用格式符%s,可以一次输入、输出字符串。,可以一次输入、输出字符串。例例:char str10;scanf(%s,str);printf(%sn,str);%s:遇第一个空白符(空格、:遇第一个空白符(空格、Tab、回车)结束输入,、回车)结束输入,遇第一个遇第一个0结束输

8、出。结束输出。输入:输入:program输出:输出:program 9.2.4 字符数组的输入输出 2022-8-1311 Program Design in C LanguagePage例例:char s110,s215;scanf(%s%s,s1,s2);printf(%s%sn,s1,s2);输入:输入:program C输出:输出:program C输入:输入:How are you输出:输出:How are scanf函数虽然给多个字符的输入提供了简便的函数虽然给多个字符的输入提供了简便的方法,但对于有空格的字符串的输入却有限制。方法,但对于有空格的字符串的输入却有限制。9.2.4

9、字符数组的输入输出 注意:注意:scanf函数参数要求的是地址,故直接用字符数函数参数要求的是地址,故直接用字符数组名进行操作。组名进行操作。字符数组名表示的是该数组的首地址,因此使字符数组名表示的是该数组的首地址,因此使用格式符用格式符%s可以实现字符串整体的输入和输出。可以实现字符串整体的输入和输出。2022-8-1312 Program Design in C LanguagePage9.3 字符串指针变量的定义与引用 字符串常量的处理是用字符数组来实现的。也字符串常量的处理是用字符数组来实现的。也就是说,无论是否定义了字符数组,对于程序就是说,无论是否定义了字符数组,对于程序中出现的字

10、符串,系统都会在内存中开辟一个中出现的字符串,系统都会在内存中开辟一个字符数组连续存储空间来存放该字符串常量。字符数组连续存储空间来存放该字符串常量。字符串的指针:字符串的首字符地址,也就是字符串的指针:字符串的首字符地址,也就是存放字符串的字符数组的首地址。存放字符串的字符数组的首地址。字符串指针变量:通常把字符串指针变量:通常把char型指针变量称为型指针变量称为字符串指针变量。也就是说,指向字符串的指字符串指针变量。也就是说,指向字符串的指针变量等同于指向字符数组元素的指针变量,针变量等同于指向字符数组元素的指针变量,可以指向字符串中的任意一个字符。可以指向字符串中的任意一个字符。202

11、2-8-1313 Program Design in C LanguagePage9.3 字符串指针变量的定义与引用 字符串指针变量的定义和初始化字符串指针变量的定义和初始化方式一:将存放字符串的字符数组名赋给字符方式一:将存放字符串的字符数组名赋给字符串指针变量,让字符串指针变量指向字符串的串指针变量,让字符串指针变量指向字符串的首字符,然后通过移动指针变量来访问字符串首字符,然后通过移动指针变量来访问字符串的其他字符。的其他字符。例如:例如:char str =Welcome to China!;char *p;p=str;/*等价于等价于 p=&str0 */2022-8-1314 Pr

12、ogram Design in C LanguagePage9.3 字符串指针变量的定义与引用 字符串指针变量的定义和初始化字符串指针变量的定义和初始化方式二:在程序中定义一个字符串指针变量,方式二:在程序中定义一个字符串指针变量,并将字符串的首地址直接赋给它,然后通过移并将字符串的首地址直接赋给它,然后通过移动指针变量来访问字符串的其他字符。动指针变量来访问字符串的其他字符。例如:例如:char *p=Welcome to China!;等价于:等价于:char *p;p=Welcome to China!;这里的字符串指针变量这里的字符串指针变量p指向字符串的首字符,指向字符串的首字符,即

13、第一个字符即第一个字符W。2022-8-1315 Program Design in C LanguagePage例例 用字符串指针变量实现字符串操作用字符串指针变量实现字符串操作#include void main()char*str=Welcome to China!;printf(%sn,str);/*整体引用字符串整体引用字符串*/for(;*str!=0;str+)printf(%c,*str);/*逐个引用字符串中的字符逐个引用字符串中的字符*/printf(n);9.3 字符串指针变量的定义与引用 程序运行结果程序运行结果:Welcome to China!Welcome to

14、China!2022-8-1316 Program Design in C LanguagePage9.3 字符串指针变量与字符数组 字符数组是由若干个元素组成,每个元素存放一字符数组是由若干个元素组成,每个元素存放一个字符;而字符串指针变量存放的是字符串中某个字符;而字符串指针变量存放的是字符串中某一个字符的地址。一个字符的地址。赋值方式不同。字符数组只能对各个元素分别赋赋值方式不同。字符数组只能对各个元素分别赋值,而字符串指针变量只用赋给字符串的首地址值,而字符串指针变量只用赋给字符串的首地址就可以了。就可以了。例如,下面的赋值是正确的:例如,下面的赋值是正确的:char *str;str

15、=Welcome to China!;/*str是指针变量是指针变量*/下面的赋值是错误的:下面的赋值是错误的:char str30;str=Welcome to China!;/*str是数组名是数组名*/2022-8-1317 Program Design in C LanguagePage9.3 字符串指针变量与字符数组 字符串指针变量占用的内存要少于字符数组。字符串指针变量占用的内存要少于字符数组。例如,编译系统为下面二维字符数组的定义及初始例如,编译系统为下面二维字符数组的定义及初始化分配了化分配了36个字节的内存空间:个字节的内存空间:char str218=Hello,Welco

16、me to China!;为下面两个字符串指针变量的定义及初始化分配了为下面两个字符串指针变量的定义及初始化分配了28个字节的内存空间:个字节的内存空间:char*str1=Hello,*str2=Welcome to China;字符串指针变量的值是可以改变的,而字符数组的字符串指针变量的值是可以改变的,而字符数组的数组名永远代表该数组的首地址,它的值是不会变数组名永远代表该数组的首地址,它的值是不会变化的。化的。2022-8-1318 Program Design in C LanguagePage例例 将字符串将字符串str1复制到字符串复制到字符串str2#include void m

17、ain()char str1=Copy string,str230;char *p1=str1,*p2=str2;while(*p1!=0)*p2+=*p1+;*p2=0;printf(String str2=);puts(str2);程序运行结果程序运行结果:String str2=Copy string9.3 字符串指针变量与字符数组 2022-8-1319 Program Design in C LanguagePage9.3 字符串指针变量作为函数参数 特点:特点:用字符数组名或字符串指针变量名作为实参,用字符数组名或字符串指针变量名作为实参,向形参传递字符串的首地址;向形参传递字符串

18、的首地址;作为形参的字符数组或字符串指针变量本质上作为形参的字符数组或字符串指针变量本质上都是字符串指针变量;都是字符串指针变量;在被调用函数中可以改变字符串的内容,在主在被调用函数中可以改变字符串的内容,在主调函数中可以得到改变以后的字符串。调函数中可以得到改变以后的字符串。2022-8-1320 Program Design in C LanguagePage例例 连接两个字符串连接两个字符串str1和和str2,连接结果放在,连接结果放在str1中中#include void strlink(char*,char*);void main()char str115=Hello,str2=W

19、orld!;strlink(str1,str2);printf(String str1=%sn,str1);void strlink(char*s,char*t)while(*s!=0)s+;/*使使s指向字符串指向字符串str1的末尾的末尾*/while(*t!=0)*s+=*t+;/*将将str2中的字符逐个连接到中的字符逐个连接到str1的末尾的末尾*/*s=0;/*在在str1的末尾加上字符串结束标志的末尾加上字符串结束标志*/程序运行结果程序运行结果:String str1=Hello World!9.3 字符串指针变量作为函数参数 2022-8-1321 Program Desig

20、n in C LanguagePage利用字符串输入输出函数利用字符串输入输出函数C语言要求在使用字符串函数时,要包含头文件语言要求在使用字符串函数时,要包含头文件stdio.h1、字符串输入函数、字符串输入函数gets();作用:作用:是将一个字符串输入到字符数组中,当遇是将一个字符串输入到字符数组中,当遇到第一个回车时结束输入到第一个回车时结束输入格式:格式:gets(字符数组名字符数组名);gets()函数同函数同scanf()函数一样,在读入一个函数一样,在读入一个字符串后,系统自动在字符串后加上一个字符字符串后,系统自动在字符串后加上一个字符串结束标志串结束标志0。9.4 字符串函数

21、 2022-8-1322 Program Design in C LanguagePage注意:注意:函数函数gets()只能一次输入一个字符串。只能一次输入一个字符串。1.函数函数gets()可以读入包含空格和可以读入包含空格和TAB的全部字符,的全部字符,直到遇到回车为止。直到遇到回车为止。使用格式符使用格式符“%s”的函数的函数scanf(),以空格、,以空格、TAB或回车作为一段字符串的间隔符或结束符,所以或回车作为一段字符串的间隔符或结束符,所以含有空格或含有空格或TAB的字符串要用的字符串要用gets()函数输入。函数输入。9.4 字符串函数2022-8-1323 Program

22、Design in C LanguagePage例例:函数:函数gets()与与scanf()的区别的区别#include main()char str120,str220;gets(str1);scanf(%s,str2);printf(str1:%sn,str1);printf(str2:%sn,str2);输入:输入:program C program C输出:输出:str1:program C str2:program9.4 字符串函数2022-8-1324 Program Design in C LanguagePage2、字符串输出函数字符串输出函数puts()作用:将一个字符串(

23、以作用:将一个字符串(以0结束的字符序结束的字符序列)输出。列)输出。格式:格式:puts(字符数组名字符数组名);或或 puts(字符串字符串);9.4 字符串函数2022-8-1325 Program Design in C LanguagePage注意:注意:函数函数puts()一次只能输出一个字符串。一次只能输出一个字符串。函数函数puts()可以输出转义字符。可以输出转义字符。1.函数函数puts()输出字符串后自动换行。输出字符串后自动换行。printf()函数可以同时输出多个字符串,并且能函数可以同时输出多个字符串,并且能灵活控制是否换行。所以灵活控制是否换行。所以printf(

24、)函数比函数比puts()函数更为常用。函数更为常用。9.4 字符串函数2022-8-1326 Program Design in C LanguagePage例例:函数:函数puts()与与printf()的区别的区别#include main()char str1=student,str2=teacher;puts(str1);puts(str2);printf(%s,str1);printf(%sn%s,str1,str2);9.4 字符串函数2022-8-1327 Program Design in C LanguagePage3 测字符串长度函数测字符串长度函数strlen 引用形式

25、:引用形式:strlen(字符数组字符数组)作用:作用:strlen()是测试字符串实际长度的函数,是测试字符串实际长度的函数,它的返回值是字符串中字符的个数(它的返回值是字符串中字符的个数(不包含不包含00的个数的个数)。)。9.4 字符串处理函数2022-8-1328 Program Design in C LanguagePage例:例:char str12=“computer”;printf(“%d”,strlen(str);printf(“%d”,strlen(“computer”);输出的结果都是输出的结果都是89.4 字符串函数2022-8-1329 Program Design

26、 in C LanguagePage例:例:函数函数strlen()的使用。的使用。#include#include main()int i;char str120,str220;gets(str1);gets(str2);for(i=0;str2i!=0;i+);printf(%s:%dn,str1,strlen(str1);printf(%s:%dn,str2,i);printf(%s:%dn,“Good luck,strlen(“Good luck);输入:输入:Good luck Good luck输出:输出:Good luck:9 Good luck:9 Good luck:9这两句

27、的功能等同于函数这两句的功能等同于函数strlen(),i 返回串长返回串长9.4 字符串函数2022-8-1330 Program Design in C LanguagePage4字符串拷贝函数字符串拷贝函数strcpy 引用形式:引用形式:strcpy(字符数组字符数组1,字符串,字符串2)作用:将字符串作用:将字符串2复制到字符数组复制到字符数组1中。中。注意:注意:(1)字符数组字符数组1必须足够大,以便容纳字符串必须足够大,以便容纳字符串2的内容。的内容。(2)字符串字符串2可以是字符数组名或者字符串常可以是字符数组名或者字符串常量。当字符串量。当字符串2为字符数组名时,只复制第一

28、为字符数组名时,只复制第一个个0前面的内容(含前面的内容(含0),其后内容不复),其后内容不复制。制。9.4 字符串函数2022-8-1331 Program Design in C LanguagePage例:例:函数函数strcpy()的使用。的使用。main()int i;char str120,str2=“Good luck;char str320,str4=“Good luck;strcpy(str1,str2);for(i=0;str4i!=0;i+)str3i=str4i;str4i=0;printf(str1:%st str2:%sn,str1,str2);printf(str

29、3:%st str4:%sn,str3,str4);输出:输出:str1:Good luck str2:Good luckstr3:Good luck str4:Good luck这两句的功能等同于函数这两句的功能等同于函数strcpy()9.4 字符串函数2022-8-1332 Program Design in C LanguagePage5字符串连接函数字符串连接函数strcat 引用形式:引用形式:strcat(字符数组字符数组1,字符串,字符串2)作用:将字符串作用:将字符串2的内容复制连接在字符数组的内容复制连接在字符数组1的后面,其返回值为字符数组的后面,其返回值为字符数组1的地

30、址。的地址。注意:注意:(1)字符数组)字符数组1不能是字符串常量,并且必须足不能是字符串常量,并且必须足够大,以便可以继续容纳字符串够大,以便可以继续容纳字符串2的内容。的内容。(2)连接前字符数组)连接前字符数组1的的0将被字符串将被字符串2覆盖,覆盖,连接后生成的新的字符串的最后保留一连接后生成的新的字符串的最后保留一个个0。9.4 字符串函数2022-8-1333 Program Design in C LanguagePage#include main()char str112=“Good ”;char str2 =“luck!”;printf(“%s”,strcat(str1,st

31、r2);例:例:函数函数strcat()的使用。的使用。其状态如下:其状态如下:输出:输出:Good luck!Good 0 luck!0 Good luck!0 str1str2str19.4 字符串函数2022-8-1334 Program Design in C LanguagePage6字符串比较函数字符串比较函数strcmp 引用形式:引用形式:strcmp(字符串字符串1,字符串,字符串2)作用:作用:比较字符串比较字符串1和字符串和字符串2。两个字符串从左至。两个字符串从左至右逐个字符比较(按照字符的右逐个字符比较(按照字符的ASCII码值的大小),码值的大小),直到字符不同或者

32、遇见直到字符不同或者遇见0为止。为止。如果全部字符都相同,则返回值为如果全部字符都相同,则返回值为0。如果不。如果不相同,则返回两个字符串中第一个不相同的字符相同,则返回两个字符串中第一个不相同的字符的的ASCII码值的差,即字符串码值的差,即字符串1大于字符串大于字符串2时函数时函数值为正,否则为负。值为正,否则为负。9.4 字符串函数2022-8-1335 Program Design in C LanguagePage例:例:函数函数strcmp()的使用。的使用。main()char str1 =abc,str2 =abc;char str3 =abc,str4 =abc;int i=

33、0;while(str3i=str4i&str3i!=0)i+;i=str3i-str4i;printf(“str1&str2:%dn,strcmp(str1,str2);printf(str3&str4:%dn,i);输出:输出:str1&str2:0str3&str4:0这两句的功能等同于函数这两句的功能等同于函数strcmp()9.4 字符串函数2022-8-1336 Program Design in C LanguagePage7 strlwr(字符串字符串)strlwr()的作用是将字符串中大写字母转换成的作用是将字符串中大写字母转换成小写字母。小写字母。8 strupr(字符串字

34、符串)strupr()的作用是将字符串中小写字母转换成的作用是将字符串中小写字母转换成大写字母。大写字母。大小写转换函数:大小写转换函数:9.4 字符串函数2022-8-1337 Program Design in C LanguagePage例:例:编写用户登录程序编写用户登录程序#include string.h main()char username10,name10=zhangsan;gets(username);if(strcmp(username,name)printf(Username are wrong!n);elseprintf(You are right!n);puts(u

35、sername);9.4 字符串函数2022-8-1338 Program Design in C LanguagePage例:例:有有3个英文字符组成的字符串,要求按照英文个英文字符组成的字符串,要求按照英文字母顺序输出。字母顺序输出。#include main()char name320=John,“Jan,Anny;char str20;int i;for(i=0;i0)strcpy(str,name0);strcpy(name0,name1);strcpy(name1,str);9.4 字符串函数2022-8-1339 Program Design in C LanguagePageif(strcmp(name0,name2)0)strcpy(str,name0);strcpy(name0,name2);strcpy(name2,str);if(strcmp(name1,name2)0)strcpy(str,name1);strcpy(name1,name2);strcpy(name2,str);for(i=0;i3;i+)printf(%sn,namei);9.4 字符串函数

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(新编-C课件语言第09讲.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|