《C语言程序设计第10章字符串课件.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计第10章字符串课件.ppt(37页珍藏版)》请在三一办公上搜索。
1、第10章 字符串,本章学习内容,字符串常量 字符串处理函数 字符数组和字符指针 向函数传递字符串 从函数返回一个字符串指针,10.1字符串常量,10.2字符串的存储,C语言并没有为字符串提供任何专门的表示法,完全使用字符数组和字符指针来处理字符数组每个元素都是字符类型的数组char str80;,数组的最后一个元素必须是0,字符数组的初始化,用字符型数据对数组进行初始化 char str6=C,h,i,n,a,0;用字符串常量直接对数组初始化 char str6=China;char str6=China;,10.3字符指针,C语言并没有为字符串提供任何专门的表示法,完全使用字符数组和字符指针
2、来处理,字符串是一串用双引号引起来的字符,字符数组就是每个元素都是字符型的数组,字符指针就是指向字符类型数据的指针,Hello China,pStr,数组最后一个元素必须是0才表示字符串,10.3字符指针,定义和初始化方法不同,str=Hello China;,Hello China,pStr,char str12=Hello China;,char*pStr;pStr=Hello China;,str,Why?,数组名str是地址常量,字符指针pStr是变量,10.3字符指针,定义和初始化方法不同,char*pStr=Hello China;,Hello China,pStr,char st
3、r12=Hello China;,char*pStr;pStr=Hello China;,str,pStr=,按字符逐个输入/输出,for(i=0;stri!=0;i+)putchar(stri);putchar(n);,char str10;,10.4字符串的访问和输入/输出,按字符串整体输入/输出,scanf(%s,str);printf(%s,str);,char str10;,10.4字符串的访问和输入/输出,gets(str);puts(str);,scanf(%s,str);printf(%s,str);,char str10;,10.4字符串的访问和输入/输出,gets(str)
4、;puts(str);,按字符串整体输入/输出,10.4字符串的访问和输入/输出,【例10.1】从键盘输入一个人名,把它显示在屏幕上,Why?,10.4字符串的访问和输入/输出,【例10.1】从键盘输入一个人名,把它显示在屏幕上,10.4字符串的访问和输入/输出,【例10.2】使用函数gets(),从键盘输入一个带有空格的人名,然后把它显示在屏幕上,10.4字符串的访问和输入/输出,【例10.2】使用函数gets(),从键盘输入一个带有空格的人名,然后把它显示在屏幕上,10.4字符串的访问和输入/输出,【例10.2】使用函数gets(),从键盘输入一个带有空格的人名,然后把它显示在屏幕上,10
5、.4字符串的访问和输入/输出,【例10.3】从键盘输入一个带有空格的人名,然后在显示人名的前面显示Hello,I said to,10.4字符串的访问和输入/输出,【例10.3】从键盘输入一个带有空格的人名,然后在显示人名的前面显示Hello,I said to,10.5字符串处理函数,#include,strcpy(目的字符串,源字符串);,string copy,strlen(字符串);,string length,strcat(目的字符串,源字符串);,string combination,strcmp(字符串1,字符串2);,string comparison,计算字符串长度,#inc
6、lude,strlen(字符串);,string length,char str10=China;printf(%d,strlen(str);打印结果是 5,6,还是10?,计算字符串长度,#include,strlen(字符串);,string length,len=strlen(str);for(i=0;ilen;i+)putchar(stri);putchar(n);,字符串复制,#include,strcpy(目的字符串,源字符串);,string copy,字符串能否用=整体复制?str2=str1;,strcpy(str2,str1);,字符串复制,#include,strcpy(
7、目的字符串,源字符串);,string copy,字符串能否用=整体复制?str2=str1;,strcpy(str2,str1);,字符串连接,#include,strcat(目的字符串,源字符串);,string combination,strcat(str2,str1);,字符串比较,#include,strcmp(字符串1,字符串2);,string comparison,字符串能否用,=比较大小?if(str2=str1),if(strcmp(str2,str1)=0),字符串比较,#include,strcmp(字符串1,字符串2);,string comparison,字符串是如
8、何比较大小的?,comparecomputer,compare computer 表示strcmp(str1,str2)0为真,【例10.4】按奥运会参赛国国名在字典中的顺序对其入场次序进行排序,【例10.4】按奥运会参赛国国名在字典中的顺序对其入场次序进行排序,10.5字符串处理函数,10.6向函数传递字符串,向函数传递字符串时,既可使用字符数组作函数参数,也可使用字符指针作函数参数 传地址调用,例10.5:字符串复制用字符数组编程,void MyStrcpy(char dstStr,char srcStr)int i=0;while(srcStri!=0)dstStri=srcStri;i
9、+;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,void MyStrcpy(char*dstStr,char*srcStr)while(*srcStr!=0)*dstStr=*srcStr;srcStr+;dstStr+;*dstStr=0;,例10.5:字符串复制用字符指针编程,*srcStr,*dstStr,H,e,l,l,o,C,h,i,n,a,0,*srcStr=0,srcStr+,dstStr+,例10.6:计算实际字符个
10、数,unsigned int MyStrlen(char str)int i;unsigned int len=0;for(i=0;stri!=0;i+)len+;return(len);,unsigned int MyStrlen(const char*pStr)unsigned int len=0;for(;*pStr!=0;pStr+)len+;return(len);,方法2:用字符指针实现,方法1:用字符数组实现,统计实际字符个数(不含0),10.7从函数返回字符指针,【例10.7】编程实现strcat()的功能,10.7从函数返回字符指针,【例10.7】编程实现strcat()的功能,10.7从函数返回字符指针,【例10.7】编程实现strcat()的功能,Questions and answers,