内容正文:
课 题
6.4 字符串处理函数
教 学
目 的
1、巩固字符数组的定义、初始化、引用,及输入与输出
2、掌握字符串处理函数
教 材
分 析
教学重点
字符串函数及字符型数组的输入与输出
教学难点
字符串处理函数
课时安排
2
教学方法
讲授与演示法相结合
教具
计算机、投影仪
教
学
内
容
及
过
程
设
计
第一课时
一、复习并新课引入:
复习字符数组的定义存放,输出与输入。字符集的相关知识
思考有没有一种专用于字符串的输出函数
二、新课讲授(字符串处理函数)
1、puts(字符数组)
功能:将一个以‘\0’结束的字符序列输出到终端;
如: static char str[ ]=“China”;puts(str);
则执行puts(str);其结果是在终端上输出China
说明:输出的字符串中可含转义字符。
用puts函数输出的字符串中可以包含转义字符。
例如:char str[]={″China
Beijing″};puts(str);
输出结果:
China
Beijing
2、gets(字符数组)
功能:从终端输入一个字符串到字符数组中,并得到一个函数值,该函数值是字符数组的起始地址; 如: gets(str);
说明:gets与puts只能输入或输出一个字符串。不能写成
puts(str1,str2) 或 gets(str1,str2)
例:gets(str)
从键盘输入:Computer↙将输入的字符串"Computer"送给字符数组str
说明:
函数值为字符数组str的起始地址。一般利用gets函数的目的是向字符数组输入一个字符串,而不大关心其函数值
3、strcat(字符数组1,字符数组2)
功能:将字符串2接到字符串1的后而且去掉字符串1的尾空;函数调用后得到一个函数值——字符数组1的地址。
如: static char str1[30]=“YangZhou ”, str2[ ]=“China”;
printf(“%s
”,strcat(str1,str2));
说明: ①字符数组1的长度需足够大;
②去掉字符串1的尾空
第二课时
一、分组讨论思考(巩固):下列代码运行后数组中数据情况
例如:
char str1[30]={″People′s Republic of ″};
char str2[]={″China″};
print(″%s″,strcat(str1,str2));
参考答案输出:
People′s Republic of China
二、相关函数
1、strcpy(字符数组1, 字符串2)
功能:将字符串2拷贝到字符数组1中去;返回前一个的首地址
如: static char str1[10],str2[ ]=“China”;
strcpy(str1,str2);
strcpy函数的几点说明
1)字符数组1必须定义得足够大,以便容纳被复制的字符串。字符数组1的长度不应小于字符串2的长度。
2)“字符数组1”必须写成数组名形式(如str1),“字符串2”可以是字符数组名,也可以是一个字符串常量。如strcpy(str1,″China″);
3)复制时连同字符串后面的′\0′一起复制到字符数组1中
4)可以用strcpy函数将字符串2中前面若干个字符复制到字符数组1中去。例如:strcpy(str1,str2,2);
作用是将str2中前面2个字符复制到str1中去,然后再加一个‘\0’。
(5)不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。如
str1=″China″; 不合法
str1=str2; 不合法
· 用strcpy函数只能将一个字符串复制到另一个字符数组中去。
· 用赋值语句只能将一个字符赋给一个字符型变量或字符数组元素。
下面是合法的使用:
char a[5],c1,c2;
c1=′A′; c2=′B′;
a[0]=′C′; a[1]=′h′; a[2]=′i′;
a[3]=′n′; a[4]=′a′;
5、strcmp(字符串1,字符串2)
功能:比较字符串1和字符串2,
返回:①串1= 串2,返回0;
②串1>串2,返回正整数;
③串1<串2,返回负整数。
思考下例的返回值是?:strcmp(str1,str2);
strcmp(″China″,″Korea″);
strcmp(str1,″Beijing″);
注意:对两个字符串比较,不能用以下形式:
i f(str1>str2) printf(″yes″);
而只能用 if(strcmp(str1,str2)>0) printf(″yes″);
6、strlen(字符数组)
功能:测试字符串的长度;返回一整数
如: static char str1[10]=“China”; printf(“%d
”,strlen(str));
输出结果是: 5
说明:不包含‘\0’在内。特殊字符%%、\’、\\、
代表一个字符。
7、strlwr(字符串)
功能:将字符串中的大写字母转换成小写字母;
8、strupr(字符数组)
功能:将字符串中的小写字母转换成大写字母。
课堂小结
1、 字符串的输入与输出,gets、puts
2、、 字符串处理函数格式与功能
三、、课堂小结
1、 字符串的输入与输出,gets、puts
2、、 字符串处理函数格式与功能
四、布置作业
上机作业:思考题程序调试,上机内容
书面作业:简述各函数格式与功能
1、判断字符串s1是否大于字符串s2,应当使用 D 。
A) if (s1>s2) B) if (strcmp(s1,s2)
C)if(strcmp(s2,s1)>0) D)if(strcmp(s1,s2)>0)
2、下面程序段的运行结果是 3 。
char c[]="\t\v\\\0will
";
printf("%d",strlen(c));
3、下面程序段的运行结果是 e 。
char a[7]="abcdef",b[4]="ABC";
strcpy(a,b);
printf("%c",a[4]);
4、有下面程序段,上机运行,将 编译出错 。
char a[3],b[]="China";
a=b;
printf("%s",a);
5、对两个数组a和b进行如下初始化
char a[]="ABCDEF";
char b[]={'A','B','C','D','E','F'};
则以下叙述正确的是 D。
A)a与b数组完全相同 B)a与b数组长度相同
C)a和b中都存放字符串 D)a数组比b数组长度长
备注
上机实训
学科网(北京)股份有限公司
$$