C与数据结构第11次课-字符串处理函数_第1页
C与数据结构第11次课-字符串处理函数_第2页
C与数据结构第11次课-字符串处理函数_第3页
C与数据结构第11次课-字符串处理函数_第4页
C与数据结构第11次课-字符串处理函数_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

首页学到现在,有什么体会?教学主题字符串处理函数教学目标通过本次课的学习,使学生掌握常用的字符串处理函数、求子串和串匹配算法。教学重点各种常用的字符串处理函数。教学难点

1、求子串的算法。

2、串的匹配算法。教案主要内容

常用的字符串处理函数

求子串的运算

串的匹配算法字符串处理函数C语言提供了丰富的字符串处理函数,大致可分为字符串的输入、输出、合并、修改、比较、转换、复制、搜索几类。用于输入输出的字符串函数,在使用前应包含头文件stdio.h。使用其它字符串函数,则应包含头文件string.h。返回单个字符的输入/出函数单个字符的输出函数

putchar(字符变量或字符常量);例如:

putchar(‘A’);

②charch=‘\n’;

putchar(ch);

单个字符的输入函数字符变量=getchar();例如:

charch;

ch=getchar();返回字符串输出函数(puts)格式:

puts(字符数组名);功能:把字符数组中的字符串输出到显示器,即在屏幕上显示该字符串。说明:

在输出时将字符串的结束标志‘\0’转换成‘\n’,即输出完字符串后换行。字符串输出函数举例源程序#include"stdio.h"voidmain(){charstr1[]="BASIC";charstr2[]="Program";puts(str1);puts(str2);}程序运行结果BASICProgramprintf(“%s\n”,str1);为什么会换行?运行程序(11_1)【问题1】写出下面程序的运行结果。字符串输入函数(gets)格式:

gets(字符数组名);功能:从标准输入设备(键盘)上输入一个字符串(一行)到字符数组,并且得到一个函数值。该函数值是字符数组的起始地址。说明:①一次调用只能输入一个字符串。②gets函数不以空格作为字符串输入结束的标志,而是以回车作为输入结束。这是与scanf函数不同的。字符串输入函数举例#include"stdio.h"voidmain(){charst[15];

printf(“输入一行字符:");

gets(st);

puts(st);}源程序【问题2】写出下面程序的运行情况。程序运行情况①输入thisisabook↙时,输出结果是什么?thisisabook输出结果运行程序(11_2)②把gets(st)改为scanf(“%s”,st),结果又如何?this输出结果字符串连接函数(strcat)格式:

strcat(字符数组名1,字符数组名2);功能:把字符数组2中的字符串(连同尾部的’\0’)连接到字符数组1中字符串的后面,并删去字符串1后的串结束标志’\0’

。本函数返回值是字符数组1的首地址。说明:①字符数组1必须足够大。字符串连接函数举例#include"string.h"voidmain(){charst1[30]="Mynameis";charst2[10];

printf("请输入姓名:\n");gets(st2);strcat(st1,st2);puts(st1);}源程序【问题3】写出下面程序的运行情况。程序运行情况输入Zhangyi↙时,输出结果是什么?MynameisZhangyi输出结果运行程序(11_3)字符串拷贝函数(strcpy)格式:

strcpy(字符数组名1,字符数组名2);功能:把字符数组2中的字符串拷贝到字符数组1中。串结束标志“\0”也一同拷贝。说明:①字符数组1必须写成数组名形式,字符数组2可以是数组名形式也可以是字符串常量。

②不能用赋值语句将一个字符串常量或字符数组直接赋给一个字符数组。例如:charstr1[20],str2[]=“program”;

str1=“program”;str1=str2;错误的用法字符串拷贝函数举例源程序【问题4】写出下面程序的运行情况。程序运行情况CLanguage输出结果运行程序(11_4)#include"string.h"voidmain(){charst1[15],st2[]="CLanguage";strcpy(st1,st2);puts(st1);}字符串比较函数(strcmp)格式:

strcmp(字符数组名1,字符数组名2)

功能:按照ASCII码顺序(即字典顺序)比较两个数组中的字符串,并由函数返回值返回比较结果。

字符串1=字符串2,返回值=0;字符串1>字符串2,返回值>0;字符串1<字符串2,返回值<0。说明:①不能用比较运算符直接比较两个字符串。例如:charstr1[]=“progress”,str2[]=“program”;

if(str1!=str2)……错误的用法字符串比较函数举例源程序【问题5】写出下面程序的运行情况。程序运行情况运行程序(11_5)#include"string.h"voidmain(){intk;charst1[15],st2[]="CLanguage";

printf("请输入一个字符串:\n");gets(st1);k=strcmp(st1,st2);if(k==0)printf("%s与%s相等。\n",st1,st2);if(k>0)printf("%s大于%s。\n",st1,st2);if(k<0)printf("%s小于%s。\n",st1,st2);}测字符串长度函数(strlen)格式:

strlen(字符数组名)

功能:测字符串的实际长度(不含字符串结束标志‘\0’),并作为函数返回值。

测字符串长度函数举例源程序【问题6】写出下面程序的运行情况。程序运行情况运行程序(11_6)#include"string.h"voidmain(){

intk;charst[]="CLanguage";k=strlen(st);

printf(“字符串(%s)的长度为%d。\n",st,k);}字符串(CLanguage)的长度为10。输出结果大小写字母转换函数将大写字母转换成小写字母函数(strlwr)格式:

strlwr(字符数组名)

功能:将字符串的大写字母转换成小写字母。

将小写字母转换成大写字母函数(strupr)格式:

strupr(字符数组名)

功能:将字符串的小写字母转换成大写字母。

大小写字母转换函数举例源程序【问题7】写出下面程序的运行情况。程序运行情况运行程序(11_7)转换后的字符串为clanguage。再次转换后的字符串为CLANGUAGE。输出结果#include"string.h"voidmain(){charst[]="CLanguage";

strlwr(st);

printf("转换后的字符串为%s。\n",st);

strupr(st);

printf("再次转换后的字符串为%s。\n",st);}求子串的运算在字符串的运算中,有时需要从一个字符串中取出该串第i个字符开始、到第j个字符截止的连续子序列(其中0<i≤j≤串长),这就是取子串操作。求子串运算的实现分析假设从字符串sor中取出任一子串,放入字符串des中。子串在主串sor中的起始位置为start,结束位置为end,则取子串操作就是将

sor[start-1],sor[start],…,sor[end-1]依次赋给

des[0],des[1],…,des[end-start]【问题8】实现求子串运算。求子串运算的实现流程图运行程序(11_8)看源程序(11_8)源程序返回串的匹配运算假设t和p是两个给定的串,在t中寻找与p相同的子串的过程称为模式匹配。一般t称为正文串(text),p称为模式串(pattern),t的长度大于p的长度。字串t为t[n],字串p为p[m],其中n、m分别为字串t和p的长度。串匹配运算的实现分析【问题9】实现串匹配运算。实现模式匹配的简单算法:对于i=0,1,…,n-m

,依次进行下面的匹配步骤,最多进行n-m+1次。匹配步骤如下:①设i=0。②用p[0],p[1]…,p[m-1]依次与t[i],t[i+1],…,t[i+m-1]进行比较。③如果p[0]=t[i],p[1]=t[i+1],…,p[m-1]=t[i+m-1],那么匹配成功,返回模式串在正文串中的位置i,整个算法结束。④如果存在某个整数k(0≤k≤m-1),使得p[k]≠t[i+k],则立即中止后面的比较。⑤令i增加1。如果i等于n-m+1,则匹配失败,整个算法结束;否则回到②进行下一轮的匹配。串匹配运算的实现子函数流程图运行程序(11_9)看源程序(11_9)源程序串匹配运算的实现主函数流程图源程序运行程序(11_9)看源程序(11_9)串匹配函数(strstr)格式:

strstr(字符数组名1,字符数组名2)

功能:在字符数组1中寻找与字符数组2相同的子串。如找到,则返回寻找到的位置;如找不到,则将NULL作为函数返回值。

串匹配函数举例源程序【问题10】写出下面程序的运行情况。运行情况运行程序(11_10)#include"string.h"voidmain(){chart[30],p[10];puts(“请输入正文串:”);gets(t);puts(“请输入模式串:”);gets(p);if(strstr(t,p)!=NULL)

printf(“

温馨提示

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

评论

0/150

提交评论