第10章-字符串.ppt_第1页
第10章-字符串.ppt_第2页
第10章-字符串.ppt_第3页
第10章-字符串.ppt_第4页
第10章-字符串.ppt_第5页
免费预览已结束,剩余58页可下载查看

下载本文档

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

文档简介

第10章字符串,顾丽红计算机与通信工程学院计算机应用技术系,本章学习内容,字符串常量字符串处理函数字符数组和字符指针向函数传递字符串,10.1字符串常量,10.2字符串的存储,C语言并没有为字符串提供任何专门的表示法,完全使用字符数组和字符指针来处理字符数组每个元素都是字符类型的数组charstr80;,数组的最后一个元素必须是0,字符数组的初始化,用字符型数据对数组进行初始化charstr6=C,h,i,n,a,0;用字符串常量直接对数组初始化charstr6=China;charstr6=China;,字符串与字符数组,在语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串字符串一串以0结尾的字符在C语言中被看作字符串用双引号括起的一串字符是字符串常量,C语言自动为其添加0终结符(0代表ASCII码为0的字符)C语言并没有为字符串提供任何专门的表示法,完全使用字符数组和字符指针来处理字符数组每个元素都是字符类型的数组,如charname20;字符数组和字符串的区别是:字符串的末尾有一个空字符0,字符数组中没有0元素,就不能按字符串处理,10.3字符指针,C语言并没有为字符串提供任何专门的表示法,完全使用字符数组和字符指针来处理,字符串是一串用双引号引起来的字符,字符数组就是每个元素都是字符型的数组,字符指针就是指向字符类型数据的指针,HelloChina,pStr,数组最后一个元素必须是0才表示字符串,10.3字符指针,定义和初始化方法不同,str=HelloChina;,HelloChina,pStr,charstr12=HelloChina;,char*pStr;pStr=HelloChina;,str,Why?,数组名str是地址常量,字符指针pStr是变量,10.3字符指针,定义和初始化方法不同,char*pStr=HelloChina;,HelloChina,pStr,charstr12=HelloChina;,char*pStr;pStr=HelloChina;,str,pStr=,按字符逐个输入/输出,for(i=0;i10;i+)scanf(“%c”,charstr10;,10.4字符串的访问和输入/输出,按字符逐个输入/输出,for(i=0;stri!=0;i+)putchar(stri);putchar(n);,charstr10;,10.4字符串的访问和输入/输出,按字符串整体输入/输出,scanf(%s,str);printf(%s,str);,charstr10;,10.4字符串的访问和输入/输出,gets(str);puts(str);,把字符数组中的字符串输出到显示器。会在结束时自动换行,scanf(%s,str);printf(%s,str);,charstr10;,10.4字符串的访问和输入/输出,gets(str);puts(str);,按字符串整体输入/输出,scanf读取字符串时会将最开始的连续的Space,Enter,Tab清理掉,开始读入字符后,读到Space,Enter,Tab时返回,而此时的Space,Enter,Tab字符会依然残留在缓冲区中;gets吸收字符串,把缓冲区中的数据全部带走,并把一行的结束符n或者文件结束EOF转换为0,10.4字符串的访问和输入/输出,从键盘输入一个人名,把它显示在屏幕上,Why?,10.4字符串的访问和输入/输出,从键盘输入一个人名,把它显示在屏幕上,10.4字符串的访问和输入/输出,使用函数gets(),从键盘输入一个带有空格的人名,然后把它显示在屏幕上(字符数组实现),10.4字符串的访问和输入/输出,【例10.2】使用函数gets(),从键盘输入一个带有空格的人名,然后把它显示在屏幕上(字符指针实现),10.4字符串的访问和输入/输出,使用函数gets(),从键盘输入一个带有空格的人名,然后把它显示在屏幕上,10.4字符串的访问和输入/输出,从键盘输入一个带有空格的人名,然后在显示人名的前面显示Hello,Isaidto,10.4字符串的访问和输入/输出,从键盘输入一个带有空格的人名,然后在显示人名的前面显示Hello,Isaidto,22,二维字符数组,二维字符数组的定义和初始化,可将二维数组当作一维数组使用,这个一维数组中的每个元素是个一维数组。,chara38=str1,str2,string3;charb6=s1,st2,str3;,chara23,b35;,二维字符数组,二维字符数组的引用chara23,b35;,for(i=0;i2;i+)printf(%sn,ai);/*输出i行字符串*/,指向字符串数组的指针定义指向字符串数组的指针的方法是:char(*指针)字符串长度#includeintmain()charsFruit510=Apple,Pear,Banana,Peach,Plum;char(*p)10;p=sFruit1;puts(p);p=*(sFruit+3);printf(%s,p);return0;,10.5字符串处理函数,#include,strcpy(目的字符串,源字符串);,stringcopy,strlen(字符串);,stringlength,strcat(目的字符串,源字符串);,stringcombination,strcmp(字符串1,字符串2);,stringcomparison,计算字符串长度,#include,strlen(字符串);,stringlength,charstr10=China;printf(%d,strlen(str);打印结果是5、6,还是10?,字符串的长度,字符串的长度是字符串中位于结束标识0之前的所有字符的个数,#includeintmain()charstr=abcdefg;inti,Length=0;while(strLength!=0)Length+;printf(Lengthofstring:n);for(i=0;iLength;i+)printf(%c,stri);printf(nis%dn,Length);return0;,length=7,计算字符串长度,#include,strlen(字符串);,stringlength,len=strlen(str);for(i=0;ilen;i+)putchar(stri);putchar(n);,#includeintmain()charstr=abcdefg;inti,Length=0;while(strLength!=0)Length+;printf(Lengthofstring:n);for(i=0;i、=比较大小?if(str2=str1),if(strcmp(str2,str1)=0),字符串比较,#include,strcmp(字符串1,字符串2);,stringcomparison,字符串是如何比较大小的?,comparecomputer,comparecomputer表示strcmp(str1,str2)0为真,字符串比较函数,语法strcmp(str1,str2)描述按照ASCII码顺序比较字符串str1和str2的大小,比较的结果由函数返回。在两个字符串str1和str2相同时返回0;字符串str1大于字符串str2时返回一个正值,否则就返回负值。,strcmp,字符串比较函数,#include#includeintmain(void)charusername15,pwd15;printf(n请输入用户名:);gets(username);printf(n请输入密码:);gets(pwd);if(strcmp(username,John)=0),请输入用户名:john请输入密码:123456用户名和/或密码无效,请输入用户名:John请输入密码:123456您已成功登录,字符串不能用关系运算符比较大小,必须借助strcmp!,字符串函数使用示例,从键盘任意输入5个学生的姓名,编程找出并输出按字典顺序排在最前面的学生姓名等价于求最小字符串,字符串函数使用示例,#include#include#defineARRA_SIZE80intmain()intn,num;charstrARRA_SIZE,minARRA_SIZE;printf(Pleaseenterfivenames:n);gets(str);strcpy(min,str);for(n=1;n5;n+)gets(str);if(strcmp(str,min)0)strcpy(min,str);printf(Theminis%s:,min);return0;,从键盘输入一行字符,将每个字符按从小到大排序。,字符串函数使用示例,#include#include#defineARRA_SIZE80intmain()inti,j,n,temp;charstrARRA_SIZE;gets(str);n=strlen(str);,字符串函数使用示例,for(i=0;istrj+1)temp=strj+1;strj+1=strj;strj=temp;,puts(str);return0;,字符串函数使用示例,for(i=0;istrj)temp=stri;stri=strj;strj=temp;,按奥运会参赛国国名在字典中的顺序对其入场次序进行排序,字符串函数使用示例,#include#include#defineMAX_LEN10#defineN150voidSortString(charstrMAX_LEN,intn);intmain()inti,n;charnameNMAX_LEN;,字符串函数使用示例,printf(Howmanycountries?);scanf(%d,字符串函数使用示例,SortString(name,n);printf(Sortedresults:n);for(i=0;in;i+)puts(namei);return0;,字符串函数使用示例,冒泡法排序,voidSortString(charstrMAX_LEN,intn)inti,j;chartempMAX_LEN;for(i=0;i0)strcpy(temp,strj+1);strcpy(strj+1,strj);strcpy(strj,temp);,交换法排序,voidSortString(charstrMAX_LEN,intn)inti,j;chartempMAX_LEN;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(strcmp(strj,stri)0)strcpy(temp,stri);strcpy(stri,strj);strcpy(strj,temp);,strstr函数strstr函数的一般形式为:strstr(字符串1,字符串2)strstr函数的功能是在“字符串1”中查找“字符串2”,如果找不到,则函数返回空指针NULL,若找到了,则返回与“字符串1”中所包含的“字符串2”的首字符对应的指针,如果“字符串1”中包含“字符串2”,那么“字符串2”常被称作“字符串1”的子串,判断一个字符串中是否包含一个子串,#include#includevoidmain()char*pSrc=oneworld,onedream.;char*ps1=world,*ps2=one;char*p=NULL;printf(字符串:%sn,pSrc);,if(p=strstr(pSrc,ps1)=NULL)printf(未找到子串%sn,ps1);elseprintf(子串%s在第%d位n,ps1,p-pSrc+1);if(p=strstr(pSrc,ps2)=NULL)printf(未找到子串%sn,ps2);elseprintf(子串%s在第%d位n,ps2,p-pSrc+1);,10.5字符串处理函数,10.6向函数传递字符串,向函数传递字符串时,既可使用字符数组作函数参数,也可使用字符指针作函数参数传地址调用,字符串复制用字符数组编程,voidMyStrcpy(chardstStr,charsrcStr),srcStri,dstStri,H,i=0,e,i=1,l,i=2,l,i=3,o,i=4,i=5,C,i=6,h,i=7,i,i=8,n,i=9,a,i=10,0,srcStri=0,字符串复制用字符数组编程,voidMyStrcpy(chardstStr,charsrcStr)inti=0;while(srcStri!=0)dstStri=srcStri;i+;dstStri=0;,srcStri,dstStri,H,i=0,e,i=1,l,i=2,l,i=3,o,i=4,i=5,C,i=6,h,i=7,i,i=8,n,i=9,a,i=10,0,srcStri=0,voidMyStrcpy(char*dstStr,char*srcStr),字符串复制用字符指针编程,*srcStr,*dstStr,H,e,l,l,o,C,h,i,n,a,0,*srcStr=0,srcStr+,dstStr+,voidMyStrcpy(char*dstStr,char*srcStr)while(*srcStr!=0)*dstStr=*srcStr;srcStr+;dstStr+;*dstStr=0;,字符串复制用字符

温馨提示

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

评论

0/150

提交评论