




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章
字符数组与字符串
本章要点字符数组的定义与赋值字符数组的初始化与引用字符串的定义及输入与输出字符串的处理与字符串处理函数字符串与指针运算本章难点
字符串与指针运算
本章目录8.1字符数组
8.1.1字符数组的定义与赋值
8.1.2字符数组的初始化
8.1.3字符数组的引用8.2字符串
8.2.1字符串的定义及其输入与输出
8.2.2字符串的处理与字符串处理函数
8.2.3字符串与指针运算8.3字符数组与字符串应用举例8.4常见错误及解决方法8.1
字符数组8.1.1字符数组的定义与赋值(1)字符数组的定义
字符数组的定义与一般数组相同。字符数组的定义格式如下:存储种类char数组名[常量表达式];/*一维字符数组*/存储种类char数组名[常量表达式1][常量表达式2];/*二维字符数组*/
8.1
字符数组8.1.1字符数组的定义与赋值(2)字符数组的赋值在数组定义后对数组赋值,只能通过对其中的每个元素逐个赋值的方式进行。例:P228若定义之后在赋值语句中只给部分元素赋值,则剩余没有赋值的数组元素为随机字符。8.1
字符数组8.1.2字符数组的初始化1.字符初始化用字符为字符数组初始化,具体有三种情况:(1)初始化所有元素(2)初始化部分元素(3)不指定数组大小8.1
字符数组8.1.2字符数组的初始化
2.字符串初始化用双引号括起来的一个字符串(字符串常量)作为字符数组的值注意:字符串初始化与用字符初始化不同,系统会在字符串常量后自动添加一个字符串结束标记‘\0’。二维数组也可以直接用字符串来初始化。如:chart[][10]={"China","America","Japan","Russia"};8.1
字符数组8.1.3字符数组的引用1.逐个引用字符数组中的单个字符具体引用形式如:数组名[下标]
例:c[2]='a'+2;c[0]=c[2]+3;2.将字符数组作为字符串来处理在一次引用整个字符数组时,只需使用数组名即可
chara[]={"Hello"};printf("%s\n",a);/*用%s格式符输出时,printf函数中的输出项a是数组名*/8.2字符串8.2.1字符串的定义及其输入与输出1.字符串的定义字符串是用双引号括起来的一个字符序列,由零个或若干字符的构成。字符串可以包括字母、数字、专用字符和转义字符等。
C语言中字符串通常以字符串常量的形式出现.
在C语言中没有专门的字符串变量,字符串如果需要存放在变量中,需要用字符数组来存放,即字符串是一种字符型数组8.2字符串8.2.1字符串的定义及其输入与输出2.字符串的输入与输出字符串的输入、输出可以采用逐个字符的输入、输出方式来实现,也可采用整体输入、输出方式。常用的输入与输出函数:输入函数:gets()scanf()getchar()输出函数:puts()printf()putchar()8.2字符串8.2.1字符串的定义及其输入与输出
2.字符串的输入与输出
gets()和puts()用于字符串整体的输入与输出,getchar()和putchar()用于单个字符的输入与输出。scanf()和printf()通常情况下可以代替gets()和puts(),用于字符串整体的输入与输出。在程序中调用这些函数时需包含头文件stdio.h。8.2字符串8.2.1字符串的定义及其输入与输出
2.字符串的输入与输出(1)gets()函数gets()函数的调用格式为:gets(字符数组名);功能:接受键盘的输入,将输入的字符串存放在字符数组中,直到遇到回车符时返回。但是回车换行符‘\n’不会作为有效字符存储到字符数组中,而是转换为字符串结束标志‘\0’来存储。gets()函数能接受包含空格字符的字符串8.2字符串8.2.1字符串的定义及其输入与输出
2.字符串的输入与输出(2)scanf()函数
scanf()函数在输入字符串时使用%s格式控制符,并且与%s对应的地址参数应该是一个字符数组,任何时候都会忽略前导空格,读取输入字符并保存到字符数组中,直到遇到空格符或回车符输入操作便终止了。
scanf()函数会自动在字符串后面加'\0'。8.2字符串8.2.1字符串的定义及其输入与输出
2.字符串的输入与输出gets()函数和scanf()函数输入字符串的区别gets()scanf()输入的字符串中可包含空格字符输入的字符串中不可包含空格字符只能输入一个字符串可连续输入多个字符串(使用%s%s﹒﹒)不可限定字符串的长度可限定字符串的长度(使用%ns)遇到回车符结束遇到空格符或回车符结束8.2字符串8.2.1字符串的定义及其输入与输出
2.字符串的输入与输出(3)puts()函数puts()函数的调用格式为:puts(字符数组名);功能:将字符串中的所有字符输出到终端上,输出时将字符串结束标志'\0'转换成换行符'\n'。使用puts()函数输出字符串时无法进行格式控制8.2字符串8.2.1字符串的定义及其输入与输出
2.字符串的输入与输出(4)printf()函数
printf()函数在输出字符串时使用%s格式控制符,并且与%s对应的地址参数必须是字符串第一个字符的地址,printf()函数将依次输出字符串中的每个字符直到遇到字符'\0'('\0'不会被输出)8.2字符串8.2.2字符串的处理与字符串处理函数1.字符串的处理
在C语言中,不能通过运算符直接对字符串进行求长、复制、连接、比较、查找等操作。要进行这些操作,我们既可以利用系统提供的标准库函数来实现,也可利用数组自己编写代码来完成。利用数组编写代码来逐个字符的处理字符串,可以帮助我们更好地理解库函数的工作情况。例:P325-2378.2字符串8.2.2字符串的处理与字符串处理函数
2.字符串处理函数
C语言函数中提供了相当多的字符串处理函数,熟练掌握这些函数的使用,非常方便于编程。在使用字符串处理函数时,应包含头文件”string.h”。8.2字符串8.2.2字符串的处理与字符串处理函数
2.字符串处理函数(1)字符串求长求字符串的长度的库函数是strlen,其调用格式为:strlen(字符串的地址);功能:返回字符串中包含的字符个数(不包含'\0'),即字符串的长度。注意:字符串的长度是指从给定的字符串的起始地址开始到第一个'\0'为止8.2字符串8.2.2字符串的处理与字符串处理函数
2.字符串处理函数(2)字符串连接使用strcat函数可以将两个字符串连接起来构成一个新的字符串。其调用格式为:
strcat(字符数组1,字符串2);功能:将字符串2连接到字符串1的后面(包含字符串结束标志'\0'),并返回字符串1的地址。其中,字符串2没有变,而字符数组1中的字符将增加了。注意:字符数组1的长度必须足够大,以便能容纳被连接的字符串;字符串2可以是字符数组名,也可以是字符串常量。8.2字符串8.2.2字符串的处理与字符串处理函数
2.字符串处理函数(3)字符串复制字符串的复制需使用strcpy、strncpy函数。strcpy函数调用格式为:strcpy(字符数组1,字符串2);功能:字符串2复制到字符数组1中去(包括字符串2结束标志‘\0’)。字符数组1必须是一个字符数组变量,且其长度必须足够大,以便能容纳字符串2,字符串2可以是字符数组名,也可以是字符串常量。8.2字符串8.2.2字符串的处理与字符串处理函数
2.字符串处理函数(3)字符串复制strncpy函数strncpy函数的调用格式为:
strnpy(字符数组1,字符串2,长度n);功能:将字符串2的前n个字符串复制到字符数组1中去,并在末尾加'\0'。因此strncpy函数可以实现字符串的部分复制。当n大于或等于字符串2的长度时,strncpy等价于strcpy。8.2字符串8.2.2字符串的处理与字符串处理函数
2.字符串处理函数(5)字符串比较字符串比较的函数是strcmp,其调用格式为:
strcmp(字符串1,字符串2);功能:比较字符串1和字符串2的大小。若字符串1等于字符串2,则返回0;若字符串1大于字符串2,则返回正整数;若字符串1小于字符串2,则返回负整数。8.2字符串8.2.2字符串的处理与字符串处理函数
2.字符串处理函数其他常用的字符或字符串处理函数见课本P239表8-3字符串处理函数8.2字符串8.2.3字符串与指针运算
字符串本质上是以‘\0’结尾字符数组。字符串在内存中的起始地址(即第一个字符的地址)通常称为字符串的指针,可以定义一个字符指针变量指向一个字符串。(1)字符串的表示在C语言中,既可以用字符数组来表示字符串,也可用字符指针来表示字符串如:charstr[]="Goodmorning!";char*p="Goodmorning!";8.2字符串8.2.3字符串与指针运算(2)字符串的引用当利用字符指针变量表示字符串时,可逐个引用字符串中的字符,也可整体引用字符串。
P240:例8-5与例8-68.2字符串8.2.3字符串与指针运算(3)字符指针作函数参数
将一个字符串从一个函数传递给另一个函数,可用地址传递的方法,即用字符数组名作为参数,也可用指向字符的指针变量做参数。在被调用的函数中可以改变字符串的内容,在主调函数中可以得到改变了得字符串。P240:例8-78.2字符串8.2.3字符串与指针运算(4)字符指针变量与字符数组的比较字符指针变量和字符数组都能实现字符串的存储和处理,但二者是有区别。不同点:
a.存储内容不同
b.赋值方式不同
c.地址常量与地址变量的不同8.3字符数组与字符串应用举例见教材例8-8,例8-8,例8-108.4常见错误及解决方法小结(1)字符数组也是一种常规数组,其定义形式与一般数组相同。(2)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC TR 61850-7-6:2024 EN Communication networks and systems for power utility automation - Part 7-6: Guideline for definition of Basic Application Profiles (BAPs) using IEC
- 2025-2030年中国镀锌层钝化剂行业发展趋势及投资战略研究报告
- 2025-2030年中国铅酸蓄电池行业市场现状分析规划研究报告
- 2025-2030年中国针织服装市场市场运行动态及投资战略研究报告
- 2025-2030年中国酮洛芬肠溶胶囊行业十三五规划与发展趋势分析报告
- 2025-2030年中国艾灸养生仪产业发展现状及前景趋势分析报告
- 2025-2030年中国美甲行业运行现状及发展前景分析报告
- 2025年四川省建筑安全员C证考试(专职安全员)题库及答案
- 皖北卫生职业学院《时间序列分析》2023-2024学年第二学期期末试卷
- 中央财经大学《商务智能》2023-2024学年第二学期期末试卷
- 新教科版小学1-6年级科学需做实验目录
- 《智慧旅游认知与实践》课件-第九章 智慧旅行社
- 北大金融学课程表
- 英国签证户口本翻译模板(共4页)
- 现金调拨业务
- 空白个人简历表格1
- GPIB控制VP-8194D收音信号发生器指令
- 建立良好师生关系
- 员工预支现金与费用报销流程
- 唐诗三百首(楷书)
- 01-第一章运动学绪论PPT课件
评论
0/150
提交评论