当前课程知识点:C语言程序设计 >  第22讲 编程训练 >  编程训练 >  字符串(上)

返回《C语言程序设计》慕课在线视频课程列表

字符串(上)在线视频

返回《C语言程序设计》慕课在线视频列表

字符串(上)课程教案、知识点、字幕

字符串是一串以0结尾的字符序列

在计算机科学中有一些专门针对它的算法

这一讲就是让大家初步掌握字符串的定义与常用操作

我们先看一下字符串常量

一串以0结尾的字符在C语言中被看做字符串

注意这个地方这个写法

在字符串中它有时候就写成‘\0’

但实际上它这个地方就是一个数字0

那么写成\0是为了以示区别

就是以防你把它看成那个字符0

用双引号括起来的一串字符是一个字符串常量

c语言会自动为其添加0结束符

我们看一下字符串的存储

C语言并没有为字符串提供任何专门的表示法

可以使用字符数组和字符指针来处理

字符数组是每个元素都是字符类型的数组

比如说像这样定义char str[80]

就是定义一个有80个字符的这样一个字符数组

那么如果这个地方你在字符数组当中只是放了字符

然后这个尾巴地方并没有加0

那么它仅仅是一个字符数组

但不能代表字符串

只有在数组的最后一个元素是0的这种情况下

前面的这个才成为一个字符串

我们看一下这是通过字符数组

以及字符指针来表示字符串的方式

这样定义字符数组

然后直接通过双引号初始化

前面说过

有双引号这样的话它系统会自动在后面带一个0

这是字符指针的方式

那么可以写成这样

这两种形式看起来挺类似的

但实际上还是有差别的

在字符数组当中

这些信息的存储区域和字符指针的存储区域是不同的

这个地方的hello china是字符常量

这个字符常量在后期是不可修改的

当然这个知识是稍微深入一点的知识

字符串有几种不同的输入输出方式

分别是按字符逐个输入输出

以及按字符串整体输入输出

整体输入输出又分两种方法

我们先看一下按字符逐个输入输出

这演示的是按字符逐个输出的方式

就是从字符数组下标为0的地方开始到最后

就是我们前面说过字符串的结束以0结束

所以这个判断条件不为0的时候

那么就用putchar来输出这个字符

循环的每次输出一个字符

那么从头到尾就可以把整个字符串输出出来

当然这个地方你也可以用printf来输出

输入跟这个很类似

输入的时候

你可以通过getchar或者scanf来输入

注意输入完了以后

最后在字符数组最后需要补一个0

那么这个地方在控制的时候

通常我们就用判断它是不是结束来作为这个控制

偶尔也会用求字符串长度的方式来控制

这个在后面字符串函数中会介绍

我们看一下按字符串整体输入输出

这儿你首先定义了一个这样的字符数组

然后你输入的时候可以按整体就是%s这个控制符

然后再把数组名一写

这是整体输入

整体输出的时候也是用%s

这个就可以把字符数组当中或者说字符串整个输出

这是整体输入输出的另一种形式

使用函数gets以及puts

那么前面的这种方法在输入的时候不能输入带空格的字符串

什么意思呢 就是比如说你输入一个hello world

那么这样它输入的时候只能把hello放到这个str里面

那么空格后面的字符串都输入不进去

就是这种方式它认为当你输入一个空格的时候它就结束了

而这种方式可以输入带空格的字符串

它是以输入回车作为结束

所以这种方式更常用一点

而且看起来写的也比较简单一些

所以这种更常见

常用的字符串处理函数包括求字符串的长度strlen

字符串复制函数strcpy

字符串拼接函数strcat

字符串比较函数strcmp

这就刚介绍的字符串长度 字符串拷贝 字符串拼接 字符串比较

注意使用这几个函数的时候

需要在前面包含当中加上include

我们先看一下计算字符串长度的这个函数

我们看

就是你定义了这样的字符串

然后输出这个字符串长度的时候

那么它到底打印结果是5、6还是10呢

我们看一下

这个地方它在计算的时候

它计算的是不包括0的实际的字符个数

所以对这个字符串来说

它的字符串长度是5

我们前面说过

字符串逐个输出的时候控制的时候

你可以判断字符串是不是结束

用那种方式

那么你也可以通过这种就是先求出来

字符串长度然后根据下标值这样来控制

下面我们看一下字符串复制函数

在这个地方需要特别强调的是

字符串不能用等号进行整体复制

比如说你前面定义了两个字符串

一个叫str2

一个叫str1

那么你试图把str1整体复制给str2

但是你不能这么写

就是说整数、浮点数这些东西可以通过等号进行赋值

但是字符串不行

要想实现刚才这个想法

就是把str1整体复制给str2的话

你只能使用strcpy这个函数

注意这个复制的方向

就是在这个函数当中

str1是源

str2是目标

那么因为你要把这个数据整体复制到这个里面

所以str2的空间应该是大于等于str1的

我们看一下字符串的拼接函数

这个拼接函数也是第一个参数是目的字符串

第二个参数是源字符串

同样的

str2也要足够大

因为这个函数实现的是把str1这个字符串拼在str2的后面

所以它预先在str2当中要留有足够的容量放这个str1

我们看这是两个字符串

str2是hello

它原本定义的时候它的空间有这么大

str1是这个china,把它两个拼接在一起后

拼出来就是hellochina

这个地方还留有一个余量

我们再看一下字符串比较函数

字符串比较函数这个地方也需要强调的是

在字符串比较大小的时候

不能直接通过这种==、>、< 直接来判断

那么你要想判断两个字符串是否完全等同

你需要这样来做

就是strcmp(str2, str1)通过这个函数来判断

看它是不是等于0

等于0的话就说明这两个字符串完全相同

字符串它比较大小的时候是如何工作的呢

它是这样

就是两个字符串先从开始的字母开始比较

相同就往后比

然后到这个地方不相同了

不相同了然后它出来的结果是

这个字符a的ASCII码减去字符u的ASCII码

然后减完以后得到的结果

因为这个地方a的ASCII码比u的ASCII码小

所以减完以后就得到一个负数

如果结果得到一个负数的话

你就知道前面的这个字符串比这个字符串小

比如这个str1它是compare

str2是computer

那么通过strcmp来进行比较的话

那这个比较结果小于0就是真的

C语言程序设计课程列表:

第0讲 导言

-简单介绍课程性质等

-关于编程训练

第1讲 C程序框架

-C程序框架

-作业

第2讲 C程序编译环境

-C语言的编译环境

-作业

第3讲 顺序程序的几个例子

-顺序程序的几个例子

-作业

第4讲 常见的编译错误

-常见的编译错误

-作业

-编译错误探讨

第5讲 输入输出精要

-输入输出精要

-作业

-输入输出格式探讨

第6讲 选择结构的典型例子

-选择结构的典型例子

-作业

第7讲 选择结构常见错误

-选择结构常见错误

-作业

第8讲 排除程序错误的常规方法

-排除程序错误的常规方法

-排除错误探讨

第9讲 循环结构基础

-循环结构基础

-作业

-循环类型

第10讲 循环结构程序例子

-循环结构程序例子

-作业

-程序结构

第11讲 函数基础

-函数基础

-作业

第12讲 函数举例

-函数举例(上)

-函数举例(下)

第13讲 变量的作用域与生存期

-变量的作用域与生存期

-变量的使用

第14讲 数组基础

-数组基础

-作业

第15讲 数组应用举例

-数组应用举例(上)

-数组应用举例(下)

第16讲 数组参数传递

-数组参数传递(上)

-数组参数传递(下)

-作业

第17讲 指针变量

-指针变量(上)

-指针变量(下)

-作业

第18讲 字符串

-字符串(上)

-字符串(下)

-作业

第19讲 程序调试

-程序调试

-程序调试的重要性

-程序调试讨论

第20讲 结构体及其应用

-结构体及其应用(上)

-结构体及其应用(下)

第21讲 文件

- 文件(上)

-文件(下)

第22讲 编程训练

- 编程训练

字符串(上)笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。