




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2019/7/11,第6章 字符串,软件学院计算机科学与技术教研室 冯海文 ,2019/7/11,字符串内容回顾, 一串字符在内存中连续存放”Hello”,C语言没有提供字符串类型的变量,通过字符数组或指针来操作字符串,字符串的结束标志 0,注意字符串的实际存储长度,C+和Java语言中有字符串类,2019/7/11,6.1字符数组作字符串变量,字符数组的操作字符串的方法,char s5= H,e,l,l,o;,与普通数组相同,可以修改并输出元素的值: s0=h;*修改一个元素的值* for(k =0;k5;k) putchar(sk);*输出hello*,2019/7/11,printf函数输出字符串,5.3 一维数组,要点,char s6H,e,l,1,o,0; printf(“%s” ,s);,字符数组做字符串变量,2019/7/11,字符串变量的初始化,5.3 一维数组,方式1,char s6= H,e,1,l,o,0;,字符数组做字符串变量,方式2,char s6= “He1lo”;,char s6= “He1lo”;,方式3,char s= “He1lo”;,不常用,2019/7/11,6.2 指向字符串的指针变量,初始化方法,char* p “tomorrow”;,等效方法,char* p ; p“tomorrow”;,注意区分数组的用法,2019/7/11,6.3 字符串操作函数,字符串的输出函数,printf(“m.ns”,字符类型指针);,char cs =”This is a string”; printf(“s”,cs); /*输出为This is a string*/ printf(“10s”,cs); /*m小于字符串长度,m不起作用,输出This is a string*/ printf(“20s”,cs); /*输出为口口口This is a string*,2019/7/11,使用printf输出字符串时应注意的问题,格式描述中的s必须小写,字符串操作函数,注意,由于数组名是指针,故在输出字符串变量时函数中的地址部分通常就是字符数组名,字符串常量,或指向字符串常量的指针。错误写法: printf(“s”,cs0); printf(“s”,*cs);,输出时限制其不超过一定的长度范围 printf(“104s”,cs); *输出结果为口口口口口口This*/,2019/7/11,字符串操作函数,字符串的输出函数,puts(字符类型指针);,printf与puts的区别,2019/7/11,字符串操作函数,字符串的输入函数,scanf(“ms”,字符类型指针);,char cs20; scanf(“19s”,cs);,不加19,输入的数据长度必须小于等于19。,内存地址的要求,2019/7/11,字符串操作函数,字符串的输入函数,gets(字符类型指针);,scanf和gets的区别,2019/7/11,字符串操作函数,字符串的输入函数,sprintf(以字符类型指针,格式描述字符串,地址表);,char str; unsigned short year,mon,day; gettime(,2019/7/11,字符串操作函数,字符串的输入函数,定义一个字符数组如下: char s10; 则下述函数调用中,含有错误。 Ascanf(“10 s,s); Bprintf(“5s”,s); Cputs(s+3); D gets(s);,示例,2019/7/11,字符串操作函数,字符串的运算函数,strlen(字符类型指针);,char s80=”a sting”; printf(“d”, strlen(s); *输出为9* printf(“d”, strlen( “This is a string.” ); /*输出为17。,示例,printf(“d”, sizeof(s); /*输出结果为 80*/,注意,2019/7/11,字符串操作函数,字符串运算函数,char sl10= A,0,B,C,0,D; char* s2 = “ tV 0nextn”; char *s3 = “x69m2041 082”; char s44 = s,4; printf(“dddd”,strlen(s1),strlen(s2),strlen(s3),strlen(s4);,示例,2019/7/11,字符串操作函数,字符串的运算函数,strcpy(字符型指针1,字符型指针2);,char cs20; char* p=“string”; strcpy(cs,p); puts(cs);/*输出为string */ strcpy(cs,“string”); puts(cs);/*输出为string */,示例,注意,在使用strcpy函数时,数组cs的定义长度不能小于字符串p的实际长度加1,否则发生数组超界错误。,2019/7/11,字符串操作函数,字符串的运算函数,strcat(字符型指针1,字符型指针2);,char s20,t20= “string ”; strcpy (s,“link”); strcat(s,t); puts(s); *输出为link string* ,示例,注意,在使用strcat函数时,数组s的定义长度不能小于s的实际长度与t的实际长度之和加1 。,2019/7/11,字符串操作函数,字符串的运算函数,原理,连接前t,连接前s,连接后s,2019/7/11,字符串操作函数,字符串的运算函数,strcmp (字符型指针1,字符型指针2);,若函数值 = 0,表示字符串1=字符串2 若函数值0,表示字符串1字符串2 若函数值0,表示字符串1字符串2,示例,2019/7/11,字符串操作函数,字符串的运算函数,在下述语句中,可以在字符串 sl与 s2相等时显示“Equal”。 Aif(sl = = s2)puts(“Equal” ) Bif(!strcmp(s1,s2)puts(”Equal”); Cif(*sl = = *s2)puts(“Equal” ); Dif(strcmp(s1,s2)puts(”Equal”);,示例,2019/7/11,字符串操作函数,字符串的运算函数,strupr(字符型指针); strlwr(字符型指针);,char s=“string”; strupr(s); puts(s);/*输出STRING*,示例,2019/7/11,字符串操作函数,字符串做函数参数,字符数组做函数参数,实参和形参;,includestdioh int fun(char *s) char *t=s; while(*t); return t-s-1; void main() char s100=“array”,*P=“pointto”; printf(“d,d,d”,fun(s), fun(“const”),fun(P); ,示例,要点,2019/7/11,字符串操作函数,字符串操作误区,混淆了数组与指针变量,先来分析一下,下述语句中究竟哪一个不正确? (1)char *sl“string”; (2)char s2 “string”; (3)sl“string”; (4)s2“string”;,示例,要点,2019/7/11,字符串操作函数,字符串操作误区,混淆了指针与指针指向的变量,char *P; p=“string”;*错误* printf(“s”,*p); *错误*,示例,要点,2019/7/11,字符串操作函数,字符串操作误区,使用未初始化的指针,char *p; scanf(“s”,p);*错误* strcpy(p,“string”);*错误*,示例,要点,2019/7/11,字符串操作函数,字符串操作误区,空间长度不足,(l)char s10; scanf(“s”,s);gets(s) (2)char* s1=“Hello” ,s2 = “Tom”; strcat(s1,s2); (3)char s1 =“Hello” ,*s2 = “Tom”; strcat(s1,s2); (4)char *s1 =“Hello” ,*s2 = “Tom”; strcat(s1,s2);,示例,要点,2019/7/11,字符串操作函数,字符串操作举例,不使用任何库函数,编写与 strcat具有相同功能的函数scat。在 main函数中调用scat实现两个字符串的连接。,示例,编写函数fun,它的功能是: 除了尾部连续的“*”字符之外,将字符串中其他“*”字符全部删除。例如,若字符串中内容为“*A*BC*DEF*G*”,则删除后字符串中的内容应当是“ABC DEFG*”。,示例,2019/7/11,6.4 指针数组,指针,内容,指针数组的定义 指针与数组结合,元素的引用 下标和指针间接引用,指针数组应用 字符串数组,6.4 指针数组,2019/7/11,指针数组的定义,指针数组的定义,语法,类型符* 数组名元素个数;,float *arr3;或float* arr3;,要点,数组名与元素个数 一维数组,元素类型 类型符*,6.4 指针数组,2019/7/11,指针数组的引用,指针数组的引用,语法,示例,6.4 指针数组,1. 下标法引用,数组名下标,float* Arr3; Arr0 Arr1 Arr2,要点,数组元素是指针 Arri,指针,*Arri,2019/7/11,指针数组的引用,指针数组的引用,示例,6.4 指针数组,2. 指针的间接引用,float* Arr3; *Arr *(Arr+1) *(Arr+2) *(Arr+i) 等价 Arri,要点,数组元素是指针 *(Arr+i),指针,*(Arr+i),2019/7/11,指针数组的示例,6.4 指针数组,includestdioh void main() int x1 =25, x2 = 69, x3 = 13, x4 = 60; int * a4,k,max; a0=x1;a1=x2; a2=x3;a3=x4; max = * a0; for(k=1; k4;k) if(max*ak) max*ak; printf(“nd”,max); ,2019/7/11,字符串数组,字符串数组,6.4 指针数组,1. 本质含义,一个指向字符的指针可以引用一个字符串 char *p = “string”;,一个字符类型的指针数组可以引用多个字符串,因此称作字符串数组,引子,要点,字符串数组就是基类型为字符类型的指针数组,理解字符串数组在内存中的存在形式,2019/7/11,字符串数组,字符串数组,6.4 指针数组,2. 字符串数组的初始化,要义,指向字符类型的指针初始化字符串与数组初始化结合,指针初始 化字符串,char *p = “string”;,初始化 一维数组,int a4 = 1,2,3,4,char *str4 = “one”, ”two”, ”three”, ”four”;,char *str = “one”, ”two”, ”three”, ”four”;,2019/7/11,字符串数组,6.4 指针数组,includestdioh char *s=“This”,“is” ,“a, “string”,“!”; char sum81=“”; for(k=0;k5;k) strcat(sum,sk);,2019/7/11,字符串数组示例,6.4 指针数组,分析,定义一个指针数组存储这些字符串,利用气泡排序方法对这些字符串排序(核心),循环输出排序后的结果,2019/7/11,字符串数组示例,6.4 指针数组,i=0,a5 a4 a3 a2 a1 a0,i=1,i=2,i=3,i=4,比较 a j a j+1 如果成立两元素交换,冒泡排序法思想:假设6个整数为23、1、0、43、-3和7,2019/7/11,字符串数组示例,6.4 指针数组,冒泡排序程序:当 n=6 时,进行程序抽象,i=0,a5 a4 a3 a2 a1 a0,i=1,i=2,i=3,i=4,4,i 控制外层循环: for(i=0;i ;i+),n-1,j 控制内层循环: for(j= ;j ;j+),0,n-i,n-1-i,n-i-1,2019/7/11,字符串数组示例,#include void main( ) 初始化字符串数组; for
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 定期安全人员培训课件
- 2025【各类商业合同协议范本】【各类商业合同协议范本】中国农业银行企业经营借款合同
- 2025年广西广电大数据科技有限公司第二季度招聘3人模拟试卷及答案详解(夺冠系列)
- 2025年宝鸡先行电力(集团)有限责任公司招聘(4人)模拟试卷及答案详解(必刷)
- 2025黑龙江鸡西市融媒体中心招聘公益性岗位2人模拟试卷及答案详解一套
- 2025河北邯郸市峰峰矿区招聘农村党务(村务)工作者157人模拟试卷及1套参考答案详解
- 2025年河北保定市涞水县公安局公开招聘警务辅助人员30名考前自测高频考点模拟试题及一套答案详解
- 2025辽宁省生态环境厅直属事业单位赴高校现场公开招聘工作人员考前自测高频考点模拟试题及一套答案详解
- 2025北京顺义区教委所属事业单位招聘131人考前自测高频考点模拟试题附答案详解(突破训练)
- 2025年东营市“英才进广饶”(教师类)事业单位引进人才招聘(31人)考前自测高频考点模拟试题及1套参考答案详解
- 电商行业员工行为规范与工作手册
- 借款合同中国农业银行担保借款合同3篇
- 建筑装修工程质量监督管理制度
- 不锈钢栏杆施工全流程方案
- 2025住院医师规范化培训院内师资培训考核测试题附答案
- 《一定要争气》(第2课时) 课件 小学语文部编版三年级上册
- 血透室护士手卫生
- USP232-233标准文本及中英文对照
- 部编版八上语文名著《红岩》问答题精练(教师版)
- 2025-2026学年人教精通版四年级英语上册(全册)教学设计(附目录)
- 2025年秋期人教版2年级上册数学核心素养教案(校园小导游)(教学反思有内容+二次备课版)
评论
0/150
提交评论