内容正文:
C 语言程序设计
2023
翻转课堂实用教程
7.3 字符数组
1
2
3
一维字符数组
字符串和字符数组的关系
字符串结束符
字符数组的输入和输出方式
字符串处理函数
二维字符数组
知识点
案例7.3.1
案例7.3.2
案例7.3.3
案例分析
练习字符数组
的使用
练习题
讲解本节的主要内容,方便学生的学习。
1、一维字符数组
存放了字符的数组就是字符数组。只有一个下标的就是一维字符数组。
定义、初始化、引用都与其他类型的一维数组是一样的。
举例:
char t[8] = {‘H’,’e’,’l’,’l’,’o’,’ ’,’C’,’!’};
等价于:t[0] = ‘H’,t[1] = ‘e’,t[2] = ‘l’,t[3] = ‘l’,t[4] = ‘o’,t[5] = ‘ ’,t[6] = ‘C’,t[7] = ‘!’。
char str[9] = {‘H’,’e’,’l’,’l’,’o’,’ ’,’C’,’!’,’\0’};
等价于:str[0] = ‘H’,str[1] = ‘e’,str[2] = ‘l’,str[3] = ‘l’,str[4] = ‘o’,str[5] = ‘ ’,str[6] = ‘C’,str[7] = ‘!’,str[8] = ‘\0’
较t数组,多了一个‘\0’字符,该字符的ASCII值为0
在C语言的字符串处理中,‘\0’字符作为字符串的结束。
7.3.1字符数组知识点
字符数组名还是字符数组的地址,即首字符的地址。
2、字符串与字符数组的关系
字符串就是一组连续的字符的集合,它有一个结束标志‘\0’。
使用一维字符数组来存储字符串。
一维字符数组并不一定是字符串,主要在于一维字符数组中是否在所有字符后保存一个结束符‘\0’。
举例:
若要保存”Hello C!”这个字符串常量,除了 Hello C!这8个字符外,还有一个结束符‘\0’
char str[9] = {‘H’,’e’,’l’,’l’,’o’,’ ’,’C’,’!’,’\0’};
7.3.1字符数组知识点
2、字符串与字符数组的关系
举例:
char t[8] = {‘H’,’e’,’l’,’l’,’o’,’ ’,’C’,’!’};
char str[9] = {‘H’,’e’,’l’,’l’,’o’,’ ’,’C’,’!’,’\0’};
字符数组str的有效长度:8
7.3.1字符数组知识点
str和t数组的区别是什么?
t数组没有保存‘\0’,它仅是一个字符数组.
str不仅是一个字符数组,它还可以作为一个字符串。
str的实际大小:9
3、字符串结束符
访问内存中的一个字符串,需要知道 。'\0'意味着字符串的结束。
char str[9] = {‘H’,’e’,’l’,’l’,’o’,’ ’,’C’,’!’,’\0’};
C语言在处理字符串时,会从前往后逐个扫描字符,直到遇到第一个'\0'就认为到达了字符串的末尾,结束处理。
7.3.1字符数组知识点
字符串的地址+字符串的结束符
#include<stdio.h>
int main(){
int i;
char s[17] = "Hello C program!";//先给所有元素赋初值
printf("%s
",s);
s[0] = 'H';
s[1] = 'a';
s[2] = 'p';
s[3] = 'p';
s[4] = 'y';
s[5] = '\0';
for(i=0;i<16;i++){ //输出s字符数组中所有元素
putchar(s[i]);;
}
printf("
");
printf("%s
",s); //将s作为一个字符串来处理
return 0;
}
运行结果
举例,理解结束符
7.3.1字符数组知识点
Hello C program!
Happy C program!
Happy
'\0'在输出时不显示内容。
解释出现就这个输出结果的原因。
4、字符数组的输入和输出
分为两种:
7.3.1字符数组知识点
①逐个元素的处理
② 整个数组一次性处理
4、字符数组的输入和输出
7.3.1字