




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第十一章,字符串,根据变量的作用域可以将变量划分为:局部变量和全局变量 根据变量的存储类型(决定生存期)将变量划分为: 自动变量、寄存器变量、静态变量、外部变量 静态局部变量的生存期为整个源程序,但其作用域为定义该变量的函数 静态全局变量的生存期为整个源程序,其作用域为定义该变量的源文件,2,回顾 2-1,采用传值调用方式时,在被调用函数中改变形参的值,只是改变其副本值,而不会影响调用函数中实参值 采用传址调用方式时,传递的是变量的地址值,这样在被调函数中,对形参的操作实际上操作的是实参本身 数组作为函数传递时,实际采用传址方式,3,回顾 2-2,理解字符串常量 理解字符数组和字符串的异同 使
2、用字符串输入/输出函数 使用字符串处理函数 理解指针与字符串的关系 使用字符指针数组 使用字符串作为函数参数,4,目标,5,字符串简介,char a=W; char b=a; char c=n; char d=g; char e=L; char f=i;,如何让程序存储我的姓名?,Wang Li,char name15= W, a, n, g, L, i;,用若干个字符,用字符数组,用字符串,字符串常量,字符串常量是双引号括起的任意字符序列,6,Hello World WangPing Please enter your full name: Hello Accp,字符串常量中可以包含转义序列
3、,字符串结束符,字符串与字符数组,在语言中没有专门的字符串变量,通常用一个字符数组来存放一个字符串 字符数组和字符串的区别是:字符串的末尾有一个空字符 0,7,字符串可按如下方式声明并初始化: char name15= W, a, n, g, L, i, 0; char name15 = WangLi; char password = 12345678;,手工加入一个空字符,系统将自动加入一个空字符,省略数组大小,系统自动计算,大小为后面的字符总数加1,最后一个元素存入一个空字符。,字符串I/0函数3-1,8,char name10;,scanf(%s, name);,printf(%s, n
4、ame);,格式描述串中使用转换字符串“%s”,Wang Li,Wang,9,字符串I/0函数3-2,char name10; gets(name); puts(name);,Wang Li,Wang Li,从键盘上读入一个完整的行,存入字符数组name。并用空字符0取代行尾的换行符n。,把字符数组中的字符串输出到显示器。,10,字符串I/0函数3-3,puts 函数完全可以由 printf 函数取代。 当需要按一定格式输出时,通常使用 printf 函数。,printf(n 雇员姓名是: ); puts(name); printf(n 雇员所属部门是: ); puts(dept);,prin
5、tf(n 雇员姓名是:%s,name); printf(n 雇员所属部门是:%sn,dept);,使用puts函数输出字符串,使用printf函数输出字符串,11,字符串示例,#include void main() char line30; int i,count = 0; printf(n 请输入一行字符:n ); gets(line); i=0; while(linei != 0) if(linei = ) count+; i+; printf(“n 其中的空格总数为 %d n ,count); ,C is a programming language,在循环执行时,扫描整个数组以统计出
6、空格 的数量,直到遇到字符 0。每次循环执行时,都会更新计数器 i 和 count。,其中的空格总数为 4,字符串处理函数 5-1,12,与字符串有关的内置函数在头文件string.h中定义 要使用标准库字符串处理函数,程序前应该包含: #include ,string.h,strlen,strcpy,strcmp,strcat,13,字符串处理函数 5-2,语法 strlen(s); 描述 计算字符串s中字符的个数,并将字符的个数作为函数的返回值。在计算字符个数时不计表示字符串结束的空字符0。,strlen,#include #include void main() char arr = B
7、eijing; int len1, len2; len1 = strlen(arr); len2 = strlen(Shanghai); printf(n string = %s length = %d, arr, len1); printf(n string = %s length = %d n,Shanghai,len2); ,string = Beijing length = 7 string = Shanghai length = 8,14,字符串处理函数 5-3,语法 strcpy(dest,src) 描述 其中,dest是目标字符串,src是源字符串。相当于把字符数组src中的字符
8、串拷贝到字符数组dest中。结束标志0也一同拷贝。src可以是一个字符串常量。字符数组dest应足够大,以保证字符串复制不越界。,strcpy,#include #include void main() char source = We change lives; char target20; strcpy(target,source); printf(n 源字符串 = %s, source); printf (n 目标字符串 = %sn, target); ,源字符串 = We change lives 目标字符串 = We change lives,15,字符串处理函数 5-4,语法 st
9、rcmp(str1, str2) 描述 按照ASCII码顺序比较字符串str1和str2的大小,比较的结果由函数返回。在两个字符串str1和str2相同时返回0;字符串str1大于字符串str2时返回一个正值,否则就返回负值。,strcmp,#include #include void main() char username15,pwd15; printf(n 请输入用户名: ); gets(username); printf(n 请输入密码: ); gets(pwd); if(strcmp(username,John)=0) ,请输入用户名: john 请输入密码: 123456 用户名和
10、/或密码无效,请输入用户名:John 请输入密码: 123456 您已成功登录,16,字符串处理函数 5-5,语法 strcat(dest, src) 描述 把字符串 src中的字符串连接到字符串 dest中字符串的后面。本函数返回值是字符数组dest的首地址。连接后字符串的总长度将是字符串 src 的长度加上字符串 dest的长度。目标字符串dest的大小应足够存储最终的字符串。,strcat,#include #include void main() char source_string = is very good; char target_string30 = ACCP 4.0 ; s
11、trcat(target_string,source_string); printf(n 源字符串 = %s, source_string); printf(n 目标字符串 = %sn, target_string); ,源字符串 = is very good 目标字符串 = ACCP 4.0 is very good,17,指向字符串的指针,在C语言中,可以将字符指针指向字符串 被指向的字符串可以是一个常量字符串,也可以是一个存储着字符串的字符数组,char *ptr = C Language;,char *ps=We change lives; int n=10; ps=ps+n; pri
12、ntf(%sn,ps);,lives,18,指向字符串的指针,char uname30=wahaha yiyiyaya; char *p; int count; count = 0; for (p = uname; *p != 0; p+) if (*p = a) count+; ,uname,0,5,循环,字符指针数组,字符指针数组:一个数组中的各个元素都是字符指针,19,char *names = Apple, Pear, Peach, Banana;,Apple0,Pear0,Banana0,Peach0,names,各字符串的首地址,20,字符指针数组示例,void main() ch
13、ar *names = Apple, Banana, Pineapple, Peach, Strawberry, Grapes ; char *temp; printf(“n %s %s,names2,names3); temp = names2; names2 = names3; names3 = temp; printf(n %s %s,names2,names3); printf(n); ,Apple0,Banana0,Peach0,Pineapple0,names,Strawberry0,Grapes0,temp,Pineapple Peach,Peach Pineapple,5548,5562,5583,55A8,55B3,55C9,5583,55A8,5583,21,字符串作为函数参数,void mystrcpy(char dest , char src ) int i = 0; while(srci != 0) desti = srci; i+; desti = 0; ,用户定义版字符串拷贝函数,int mystrlen (char *s) int n = 0; while (*s != 0) +s; +n; return n; ,用户定义版求字符串长度函数,字符串与字符数组的区别是字符串的末尾
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 内部审计机构管理办法
- 制盐公司基金管理办法
- 冬天暖棚蜜蜂管理办法
- 公益互助基金管理办法
- 单片机驱动电梯控制系统设计
- 畜禽肌内脂肪沉积与代谢调控基因的研究进展
- 民企退休人员管理办法
- 体检信息保密管理办法
- 目标设定:投资发展部绩效考核指标
- 北京首个露营管理办法
- 湖南长沙长郡中学高一分班考试化学试卷
- 衡水市武强县事业单位考试历年真题
- 髋臼周围截骨术治疗成人髋关节发育不良
- 各科门诊诊所技术操作规程
- 新教材人教版高中化学选择性必修1全册课时练习及章末检测含解析
- 浙江省建设工程施工费用定额相关费用计算程序表及费用取费费率换算表【实用文档】doc
- 《Windows网络操作系统》教学教案
- GB/T 23280-2009开式压力机精度
- GB/T 20041.21-2008电缆管理用导管系统第21部分:刚性导管系统的特殊要求
- GB/T 17213.4-2015工业过程控制阀第4部分:检验和例行试验
- 教师师风师德培训 课件
评论
0/150
提交评论