13 《C语言程序设计》教案 第四章 数组(3)—字符数组和字符串
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
教学内容
1.基本内容:(1)几种常用的字符串处理函数(2)指针与数组。
2.重点:几种常用的字符串处理函数
3.难点:指针与数组
讲课进程和时间分配
1、复习与新知识导入(5分钟)
2、字符串处理函数(45分钟)
C语言编译系统中,提供了很多有关字符串处理的库函数。下面介绍几个常用的字符串处理函数。使用输入、输出字符和字符串函数时,应在函数前加上头文件stdio.h;使用其他字符串操作函数时,则应加上头文件string.h。
板书:#include
#include
(1)字符串输出函数
格式:puts(字符串)
功能:将一个字符串(以\0为结束标志)输出到终端。输出的字符串中可以包含转义字符。例如:charstr口={“China\nBeijing};puts(str);
输出:China
Beijing
在输出时将字符串结束标志\0转换成\n,即输出完字符串后换行。
板书:puts(str);与printf(%s\n,str)等价或puts(OK!);与printf(%s\n,OK!)或printf(OK!\n)等价(2)字符串输入函数
格式:gets(字符数组)
功能:从终端输入一个字符串(可包含空格)以回车为输入结束标志,将接受到的字符依次赋值给字符数组各个元素,并自动在字符串末尾加结束标记\0。例如:gets(str);注意:用puts和gets函数只能输入或输出一个字符串,不能写成:puts(str1,str2);或:gets
(str1,str2);说明:字符串可以是字符数组或字符串常量。
而scanf()是以回车、空格或tab键做分隔符的。
例:voidmain()
{
chars[100];
printf(请输入一个字符串:);
gets(s);
printf("输入的字符串是:");puts(s);
}
红色改为puts(gets(s)),不影响程序运行结果。
(3)连接两个字符串函数
格式:strcat(字符串1,字符串2)
功能:连接两个字符串中的字符,把字符串2的字符连接到字符串1的字符后面,结果放在字符串1中,函数调用后得到一个函数值字符串1的起始地址。
例如:
charstr1[30]={people'srepublicof};
charstr2[]={china};
printf(%s,strcat(str1,str2));
输出:people'srepublicofchina
说明:1)字符串1必须足够大,以便能容纳连接后的新字符串。
2)连接前两个字符串后面都有一个\0,连接时将字符串1后面的\0取消,只在新串的
最后保留一个\0。
思考:以下程序是正确的charc;c=A+B;那么,下面的程序呢?charc[10];c=A+B;是不正确的,必须用strcat()函数来连接。
(4)字符串拷贝函数strcpy
格式:strcpy(字符数组,字符串)
功能:将字符串拷贝到字符数组中去。
例如:
charstr1[10],str2[]={china};
strcpy(str1,str2);/*或strcpy(str1,china);*/
执行后str1的内容为:china\0\0\0\0\0
说明:
1)字符数组必须足够大,以便能容纳被拷贝的字符串。
2)拷贝时连同字符串后面的\0一起拷贝到字符数组中。
3)不能用赋值语句将一个字符串常量或字符数组直接赋给一个字符数组。
下面的用法是错误的:str1={china};str1=str2;而只能用拷贝函数strcpy处理。
用赋值语句只能将一个字符赋给一个字符型变量或字符数组元素。
如下面是合法的:chara[5],c1,c2;c1=A;c2=B;a[0]=c;a[1]=h;a[2]=i;a[3]=n;a[4]=a;
4)可以用strcpy函数将字符串中前面若干个字符拷贝到字符数组中去。
例如:strcpy(str1,str2,2);
将str2中前面2个字符拷贝到str1中去,然后再加一个\0。
(5)字符串比较函数
格式:strcmp(字符串1,字符串2)
功能:比较字符串1和字符串2的大小。
说明:
按照ASCII码值大小比较,将两个字符串自左至右逐个字符比较,直到出现不同的字符或遇到\0为止。如果全部字符相同,则认为相等;如果出现不相同的字符,则以第一个不相同字符的比较结果为准。
1.字符串1==字符串2,函数值=0;
2.字符串1>字符串2,函数值>0;
3.字符串1<字符串2,函数值<0。
两个字符串的比较,不能用以下形式str1==str2或str1>str2只能用strcmp(str1,str2)>0或==0或<0来判断
(6)测试字符串长度函数
格式:strlen(字符数组)
功能:测试字符串长度,函数值为字符串中实际长度,不包括\0。例如:
charstr[10]={china};
printf(%d,strlen(str));
结果为:5
(7)字符串小写函数
格式:strlwr(字符串)
功能:将字符串中大写字母转换成小写字母。lwr是lowercase(小写)的缩写。(8)字符串大写函数
格式:strupr(字符串)
功能:将字符串中小写字母转换成大写字母。upr是uppercase(大写)的缩写。(9)字符数组程序举例
1)输入一个字符串,将其中的大写字母均变成小写字母。
#include
#include
{
chars[40],c;
inti=0;
printf(输入一个字串:);
gets(s);
strlwr(s);
printf(输出转换后的字串:);
puts(s);
}
2)从字符串中取出指定长度的子串。
#include
main()
{
chars1[40],s2[40];
inti=0,m;
printf(\n输入要截取子串的母串:);
gets(s2);
printf(\n输入要截取子串的长度:);
scanf(“%d”,&m);
while(i {s1[i]=s2[i];i++;} s1[i]='\0'; printf(\n输出所截取的子串:%s",s1); } 3)某单位的工作证号码的最后一位是用来表示性别的,如:M表示男,F表示女。今输入5个人的工作证号码,请统计出其中的男女人数。 #include #include main() {