文章目录
文档视频讲解链接地址
- 腾讯课堂链接 : 45_数组_二维数组与字符数组
5.6 字符数组与字符串
字符数组
- 定义:字符数组是元素的数据类型为字符类型的数组,它既具有普通数组的一般性质,又具有某些特殊性质。
- 例如:
char c1[10] ; char c2[3][4];
字符数组的初始化
逐个字符初始化
字符串常量初始化
二维字符数组初始化
实例58
- 使用二维字符数组输出 ( Mon , Tue , Wed , Thu, Fri, Sat,Sun)
- 源文件
01-cbase\58-week.c
- 源代码
#include <stdio.h> int main(int argc, char const *argv[]) { char week[][5] = {"Mon","Tue","Wed","Thu","Fri","Sat","Sun"} ; // 二维字符数组, 每一行有5列 // 降维理解数组, week 是一个一维数组, 一共有7个元素, // 分别是week[0],week[1],week[2],week[3],week[4],week[5],week[6] // 每一个元素又有5个子元素 // week[0][0],week[0][1],week[0][2],week[0][3],week[0][4] // week[1][0],week[1][1],week[1][2],week[1][3],week[1][4] // week[2][0],week[2][1],week[2][2],week[2][3],week[2][4] // week[3][0],week[3][1],week[3][2],week[3][3],week[3][4] // week[4][0],week[4][1],week[4][2],week[4][3],week[4][4] // week[5][0],week[5][1],week[5][2],week[5][3],week[5][4] // week[6][0],week[6][1],week[6][2] ,week[6][3],week[6][4] printf("sizeof(week)=%d\n",sizeof(week)) ;// 数组占用内存的字节数 , 一共7行 , 5列, 7*5 = 35 printf("sizeof(week[0])=%d\n",sizeof(week[0])) ; // week[0] 是一个一维数组的数组名 = 5 printf("week[0] = %s\n",week[0]) ; // 可以使用%s 来输出字符数组中的字符串, 只需要制定数组名即可 printf("***************************************************\n"); // for 循环输出 Mon ... Sun 字符串 for(int i=0;i< sizeof(week)/sizeof(week[0]) ;i++) { printf("week[%d]=%s\n",i,week[i]); } return 0; }
- 运行结果
sizeof(week)=35 sizeof(week[0])=5 week[0] = Mon *************************************************** week[0]=Mon week[1]=Tue week[2]=Wed week[3]=Thur week[4]=Fri week[5]=Sat week[6]=Sun
字符串
在 C 语言中,字符串实际上是使用空字符 ‘\0’ 结尾的一维字符数组。因此,‘\0’ 是用于标记字符串的结束。
‘\0’, 0, ‘0’ 的区别
‘\0’ : 就是0 , 是ascii的0 , 是字符’0’经过转义来的 , 只是一种书写形式
0 : 就是0 , 是ascii的0 , '\0’和0 是等价的, 只是不同的书写方式
‘0’ : 是字符0 , ascii的48
字符串的输入与输出
逐个字符输入与输出: %c
- 例如 :
char str[5]; for(int i=0;i<5;i++) scanf("%c", &str[i]); for(int i=0;i<5;i++) printf("%c", str[i]);
整个字符串输入与输出:%s
字符串输出遇到多个‘\0’时
- %s输出时遇到第一个‘\0’结束
- %s输出时遇到第一个‘\0’结束
实例59
- 输入一个字符串,然后将其逆序输出。
- 源文件
01-cbase\59-str.c
- 源代码
#include <stdio.h> int main(int argc, char const *argv[]) { char str1[100] = {0}; printf("请输入一个字符串 >:"); scanf("%s", str1); // 只有%s时, 地址符号不用 , 是因为数组名本身就是地址了, 所以就不要了 printf("str1=%s\n", str1); // 把str1 的内容逆序 , 先要计算字符的个数 , 可以使用while循环去计算字符个数 , 遇见'\0'结束 int len = 0; while (str1[len] != '\0') len++; printf("len=%d\n",len); // i就是字符创的长度 char t; for(int i=0;i<len/2;i++) { t = str1[i] ; str1[i] = str1[len-1-i] ; str1[len-1-i] = t; } printf("str1=%s\n", str1); return 0; }
- 运行结果
请输入一个字符串 >:goodbye str1=goodbye len=7 str1=eybdoog
本文含有隐藏内容,请 开通VIP 后查看