智能网联汽车计算机基础 课件 项目三任务4:字符与字符串处理_第1页
智能网联汽车计算机基础 课件 项目三任务4:字符与字符串处理_第2页
智能网联汽车计算机基础 课件 项目三任务4:字符与字符串处理_第3页
智能网联汽车计算机基础 课件 项目三任务4:字符与字符串处理_第4页
智能网联汽车计算机基础 课件 项目三任务4:字符与字符串处理_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

字符与字符串处理汽车计算机基础一、课程导入在C语言中,“字符”与“字符串”之间,是有区别的。首先,一个很明显的区别是“字符”,使用单引号作为定界符,而“字符串”,是使用双引号作为定界符。C语言中字符定义为一种基本数据类型(char),表示单个字符;字符串不是基本数据类型,但可以通过char的数组代替,末尾用’\0’结束。

字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数一、课程导入在C语言中,是没有办法直接定义字符串数据类型的,那么如果我们要使用字符串的时候可以怎么定义呢?

字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数二、字符型数据的使用2.1字符型数据的输入与输出C语言中,输出字符使用putchar()函数,输入字符使用getchar()函数。(1)putchar函数(字符输出函数)putchar函数是字符输出函数,其功能是在显示器上输出单个字符。其一般形式为:使用本函数前必须要用文件包含命令:对控制字符则执行控制功能,不在屏幕上显示。字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数二、字符型数据的使用2.1字符型数据的输入与输出【例1】输出单个字符。字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数二、字符型数据的使用2.1字符型数据的输入与输出(2)getchar函数(键盘输入函数)getchar函数的功能是从键盘上输入一个字符。其一般形式为:通常把输入的字符赋予一个字符变量,构成赋值语句,如:字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数二、字符型数据的使用2.1字符型数据的输入与输出(2)getchar函数(键盘输入函数)【例2】输入单个字符。字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数二、字符型数据的使用2.2字符型数据与整型数据的混合运算(1)字符型数据与整型数据的运算字符型数据与整型数据可以进行混合运算,因为字符数据存储时,内存中是以二进制ASCII码的形式存储。如‘a’,内存中存储二进制数01100001。用一个字节存储十进制整数97,内存中存储的二进制数是01100001。C语言中,字符(char)型数据与整数数据进行运算,就是把字符的ASCII代码与整型数据进行运算。如:'A'+25,由于字符A的ASCII代码是65,相当于65+25,等于90。编程如下:字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数二、字符型数据的使用2.2字符型数据与整型数据的混合运算【拓展】数据类型转换在C语言中,整型、实型、字符型数据之间可以进行混合运算。两个不同类型的数据进行混合运算时,首先要将其中取值范围较小的类型转换为取值范围较大的类型,然后再进行运算。这种类型转换是由系统自动进行的,故称为自动类型转换。例如:5.0/2+‘a’首先/的优先级高,所以第一步计算5.0/2。2是整型,5是实型,所以先进行第一次转化,结果就是2.50000。字符型数据在参与运算的时候,会先转化成int型。就是‘a’首先转为97,然后再进行2.50000+97的运算。字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数二、字符型数据的使用2.2字符型数据与整型数据的混合运算【拓展】数据类型转换综上,在不同类型的混合运算中,编译器会自动地转换数据类型,将参与运算的所有数据先转换为同一种类型,然后再进行计算。转换的规则如下:①转换按数据长度增加的方向进行,以保证数值不失真,或者精度不降低。例如,int和long参与运算时,先把int类型的数据转成long类型后再进行运算。②所有的浮点运算都是以双精度进行的,即使运算中只有float类型,也要先转换为double类型,才能进行运算。③char和short参与运算时,必须先转换成int类型。字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数二、字符型数据的使用2.2字符型数据与整型数据的混合运算【拓展】数据类型转换自动类型转换是编译器根据代码的上下文环境自行判断的结果,有时候并不是那么“智能”,不能满足所有的需求。如果需要,程序员也可以自己在代码中明确地提出要进行类型转换,这称为强制类型转换。字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数二、字符型数据的使用2.2字符型数据与整型数据的混合运算【拓展】数据类型转换强制类型转换的格式为:无论是自动类型转换还是强制类型转换,都只是为了本次运算而进行的临时性转换,转换的结果也会保存到临时的内存空间,不会改变数据本来的类型或者值。字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数三、字符串的存储与引用3.1字符串在内存中的存储形式使用字符数组来存储:将字符串数据的每一个字符存储到字符数组中,并追加一个’\0’代表存储结束。使用字符指针来存储字符串数据:直接将一个字符串数据初始化给一个字符指针。字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数三、字符串的存储与引用3.2字符串的引用方式(1)通过数组名和下标字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数三、字符串的存储与引用3.2字符串的引用方式(2)通过字符指针变量引用一个字符串常量。字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数三、字符串的存储与引用3.2字符串的引用方式(3)使用字符指针变量和字符数组的比较用字符数组和字符指针变量都能实现字符串的存储和运算,但二者之前是有区别的。字符数组由若干个元素组成,每个元素放一个字符,而字符指针变量中存放的是地址。赋值方式。可以对字符指针变量赋值,但不能对数组名赋值。初始化的含义。对字符指针变量赋初值,将字符串第一个元素地址赋值;对数组名的初始化,将字符串赋给各个元素。存储单元的内容。编译时为字符数组分配若干个存储单元,对字符指针变量只分配一个存储单元指针变量的值是可以改变的,而字符数组名代表一个固定的值(数组首元素的地址),不能改变。字符数组的各个元素是可以改变的,但字符指针变量指向字符串常量是不能改变的。引用数组元素。可以对字符数组采用下标法(a[i]),也可以用地址法(*(a+i))。字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数四、字符串的输入和输出4.1字符串的输出在C语言中,有两个函数可以在控制台(显示器)上输出字符串,它们分别是:puts():输出字符串并自动换行,该函数只能输出字符串。printf():通过格式控制符%s输出字符串,不能自动换行。除了字符串,printf()还能输出其他类型的数据。字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数四、字符串的输入和输出4.1字符串的输出在C语言中,有两个函数可以在控制台(显示器)上输出字符串,它们分别是:puts():输出字符串并自动换行,该函数只能输出字符串。printf():通过格式控制符%s输出字符串,不能自动换行。除了字符串,printf()还能输出其他类型的数据。×输出字符串时只需要给出名字,不能带后边的[]。字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数四、字符串的输入和输出4.2字符串的输入在C语言中,有两个函数可以让用户从键盘上输入字符串,它们分别是:scanf():通过格式控制符%s输入字符串。除了字符串,scanf()还能输入其他类型的数据。gets():直接输入字符串,并且只能输入字符串。scanf()函数和gets()函数的区别:scanf()读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。gets()认为空格也是字符串的一部分,只有遇到回车键时才认为字符串输入结束,所以,不管输入了多少个空格,只要不按下回车键,对gets()来说就是一个完整的字符串。换句话说,gets()用来读取一整行字符串。字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数四、字符串的输入和输出4.2字符串的输入字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数五、字符串处理函数5.1字符串长度函数strlen()strlen是stringlength的缩写,用来获得字符串的长度。所谓长度,就是包含多少个字符(不包括字符串结束标志'\0’)。strlen()函数从字符串的开头位置依次向后计数,直到遇见\0,然后返回计时器的值。最终统计的字符串长度不包括\0。语法格式为:返回值:strlen将返回字符串的长度,它是一个整数。字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数五、字符串处理函数5.1字符串长度函数strlen()例如:使用C语言strlen()函数求字符串的长度。字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数五、字符串处理函数5.1字符串长度函数strlen()注意sizeof和strlen()函数的区别。例如:字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数五、字符串处理函数5.1字符串长度函数strlen()可以看到,sizeof统计出的字符串长度比strlen()函数的统计值大1。原因很简单,sizeof统计了字符串结尾的\0,而strlen()函数没有。strlen()函数计算的是字符串的实际长度,遇到第一个'\0'结束。如果你只定义没有给它赋初值,这个结果是不定的,它会从首地址一直找下去,直到遇到'\0’停止。sizeof返回的是变量声明后所占的内存数,不是实际长度,此外sizeof不是函数,仅仅是一个操作符,strlen()是函数。字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数五、字符串处理函数5.2字符串连接函数strcat()strcat是stringcatenate的缩写,意思是把两个字符串拼接在一起,语法格式为:strcat将把arrayName2连接到arrayName1后面,并删去arrayName1最后的结束标志‘\0’。这就意味着,arrayName1的长度要足够,必须能够同时容纳arrayName1和arrayName2,否则会越界。返回值:strcat()的返回值为arrayName1的地址。arrayName1、arrayName2为需要拼接的字符串。字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数五、字符串处理函数5.2字符串连接函数strcat()例如:字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数五、字符串处理函数5.3字符串复制函数strcpy()strcpy是stringcopy的缩写,意思是字符串复制,也即将字符串从一个地方复制到另外一个地方,语法格式为:strcpy()会把arrayName2中的字符串拷贝到arrayName1中,字符串结束标志'\0'也一同拷贝。将str2复制到str1后,str1中原来的内容就被覆盖了。另外,strcat()要求arrayName1要有足够的长度,否则不能全部装入所拷贝的字符串。字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数五、字符串处理函数5.4字符串复制函数strcpy()例如:字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数五、字符串处理函数5.4字符串比较函数strcmp()strcmp是stringcompare的缩写,意思是字符串比较,语法格式为:字符本身没有大小之分,strcmp()以各个字符对应的ASCII码值进行比较。strcmp()从两个字符串的第0个字符开始比较,如果它们相等,就继续比较下一个字符,直到遇见不同的字符,或者到字符串的末尾。返回值:若arrayName1和arrayName2相同,则返回0;若arrayName1大于arrayName2,则返回大于0的值;若arrayName1小于arrayName2,则返回小于0的值。arrayName1和arrayName2是需要比较的两个字符串。字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数五、字符串处理函数5.4字符串比较函数strcmp()例如:对4组字符串进行比较。字符串的输入和输出课程导入字符串的存储与引用字符型数据的使用总结字符串处理函数1.在C语言中,字符串总是以'\0'作为结尾,所以'\0'也被称为字符串结束标志,或者字符串结束符。2.在C语言中,输出字符使用putchar()函数,输入字符使用getchar()函数。3.字符(char)型数据与整数数据进行运算,就是把字符的ASCII代码与整型数据进行运算。4.C语言数据类型转换(1

温馨提示

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

评论

0/150

提交评论