第10章 字符串-【千锋教育】C语言程序设计(微课)
2023-03-21
|
54页
|
105人阅读
|
0人下载
教辅
内容正文:
第10章 字符串
字符串表示
字符串输入
字符串输出
操作字符串
通过命令行传递参数
字符串函数的实现
C语言程序设计
字符串表示
字符串输入
字符串输出
操作字符串
通过命令行传递参数
字符串函数的实现
01
02
04
05
03
目 录
CATALOUGUE
初心至善 匠心育人
掌握字符串的表示
理解获取命令行参数
熟悉字符串的输入与输出
掌握字符串函数的实现
学 习 目 标
LEARNING OBJECTIVES
初心至善 匠心育人
10.1
字符串表示
10.1.1
字符数组
10.1.2
字符串
10.1.3
字符串与指针
初心至善 匠心育人
字符数组就是用来存放字符的数组。具体示例如下:
上面的语句定义了一个长度为8的字符数组,并为其指定了初始值。从中可以得出,字符数组和其他数组定义方式类似,只是存储的元素类型为字符型而已。每个元素占用一个字节,具体如图所示:
10.1 字符串表示
10.1.1 字符数组
初心至善 匠心育人
第4行:定义字符数组a并初始化。
第6~9行:循环输出数组a中的每个字符元素。
10.1 字符串表示
10.1.1 字符数组
初心至善 匠心育人
在各种编程语言中,字符串都是十分重要的。C语言中并没有直接提供字符串这个特定类型,而是用特殊的字符数组来存储字符串。C语言对于字符串做了如下规定:以空字符'\0'结尾的字符数组被称作字符串。这种字符数组也被称为C风格字符串。
要将上一小节中用到的字符数组转换成字符串,需要修改为下面的代码:
注意到上面的语句中省略了a的大小。修改后,由于数组的末尾多了一个空字符,字符数组a的大小为9。但是这个字符串的长度为8,注意字符串的长度并不包括末尾空字符。此外,还可以在空字符后面添加其他字符,具体示例如下:
10.1 字符串表示
10.1.2 字符串
初心至善 匠心育人
这个字符数组的大小为11,但由于空字符出现在字符数组的中间,因此它所表示的字符串仅仅是“qianfeng”,对应的字符串长度是8。从字符数组的第一个字符开始,遇到第一个空字符就标志着字符串的结束。
在字符数组初始化时,这种给每个数组元素赋初值的表达未免有点繁琐。在C语言程序中可以直接使用一个字符串常量对字符数组进行初始化,具体示例如下:
上例中双引号之间的是一个字符串常量。一旦这样声明,会自动在字符串常量后添加一个空字符'\0'作为字符串的结束标志,该标志总在最后一个字符之后。这意味着字符数组a的大小不是8个字节,而是9个字节。
上面的定义和下面的定义是等价的:
10.1 字符串表示
10.1.2 字符串
初心至善 匠心育人
由定义数组的方法可知,可以在声明时省略数组大小,让编译器自动确定数组的大小,具体示例如下:
接下来通过一个案例来演示字符串与字符数组之间的关系,具体如下例所示。
10.1 字符串表示
10.1.2 字符串
第6行:打印字符数组a所占的字节数。
第7~10行:通过for循环输出每个元素在内存中的地址及对应的值。
另外,可以用更简洁的方法来定义字符数组,即省略字符串常量前后的大括号。:
初心至善 匠心育人
在指针一章中,数组名可以当作指针使用,指针也可以被直接用来访问数组中的元素。字符型指针可以使用char*来定义,它既可以指向一个字符型变量,也可以指向整个字符串。具体示例如下:
上例中字符指针p既指向了字符'q',又指向了字符串"qianfeng",这是因为字符'q'位于字符串"qianfeng"的起始处,由于p指向的是字符串"qianfeng"所在的内存地址的起始位置,因此它也是指向字符'q'的字符指针。
10.1 字符串表示
10.1.3 字符串与指针
初心至善 匠心育人
此外,还可以通过字符指针遍历整个字符串中的每个字符,进而对字符串进行操作。由于C风格字符串总是以空字符‘\0’结尾,因此在循环时没必要提前获取整个字符串的长度,只要每次循环开始之前判断当前位置是否为空字符即可。如果是空字符,则结束循环。具体如下例所示:
第5行:使用取值操作符*从指针p指向的地址取得了字符'q'并输出,这是通过字符指针访问了单个字符。
第6行:将整个字符指针直接传递给printf函数,由格式化输出参数%s输出整个字符串,这是通过字符指针访问了整个字符串。
10.1 字符串表示
10.1.3 字符串与指针
初心至善 匠心育人
第7~12行:每次循环时,p指向的字符减去'a' - 'A',且p自身也被加1。在最后一次循环完成后,p指向整个字符数组的最后一个字节,即空字符。
第15行:将指针p重新指到字符数组首部。
第16~20行:通过循环输出字符数组中的每个字符。
10.1 字符串表示
10.1.3 字符串与指针
初心至善 匠心育人
可能有读者在编写程序时,将上例中的4、5行写成
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。