C语言:数组(2)——一维字符型数组(用得最多)
目录
一、一维字符型数组
1.概念:在C语言中用来存放字符串的数据类型
2.字符型数组的定义:
数据类型 数组名 [元素个数]
示例: char str[10];
注意:①元素个数必须为常量
②元素个数 >= 要存储的字符串的长度
3.数组元素访问
数组名[元素下标]
str[0];
str[1+2];
str[n];
str[n+1];
注意:①访问时元素下标为0~元素个数-1
4.字符型数组的初始化
1.全部初始化
char str[6] = {'h' , 'e' , 'l', 'l', 'o', '\0'};
char str[6] = {"hello"}; //双引号引起来代表字符串
char str[6] = "hello"; //双引号引起来代表字符串,包含'\0'
2.局部初始化
char str[6] = {'h' , 'e' , 'l'}; //未被初始化的,默认初始化为数字0(不是字符0)【和整型数组一样,存储的是全0】
//即str[3] = str[4] = str[5] = '\0'
//'\0'的ascii码为0,'0'的ascii码为48
char str[6] = {0}; //不加引号就不是字符而是值。 作用:将str 数组清0,即'\0'
3.默认初始化
char str[ ] = {'h' , 'e' , 'l', 'l', 'o'}; //里边是5个元素,没有'\0'
char str[ ] = {"hello"}; //里边是6个元素,只有存在”“,才会自动添加'\0'
char str[ ] = "hello"; //里边是6个元素,只有存在”“,才会自动添加'\0'
char str[ ] = "he\0"; //里边是4个元素,只有存在”“,才会自动添加'\0'
注意:①局部初始化中没有给定初值的元素为0值,即'\0'
②建议最好不要默认初始化,除非对空间要求非常严苛(即:没有空余的字符元素)
∵有人容易写成 char str[ ] = {0}; //str只能存一个0,存不了\0
5.常见错误
1.初始化 ≠ 赋值
char str[6] = {0};
str[6] = "hello"; //错
str = "hello"; //错
注:数组不能整体赋值
6.字符型数组的存储
1.字符型数组所占空间大小 = 数组元素个数。(一个字符串占一个字节)
2.字符型数组的特点:①连续性:存放数据的空间连续
②有序性 :存放数据的顺序是有序的
③单一性 :数组元素类型一致
二、一维字符型数组(字符串)的常用函数
1.字符串的打印
1.printf
printf("%s",str); //打印从字符串开头到是一个\0中的部分,∵\0为字符串的结束标志
2.puts
puts(str); //puts 会多打印一个\n,因为puts是输出一行字符串
2.字符串的接收
1.scanf
scanf("%s",str); //scanf只有对字符数组不取地址。
注意:只有%c会接收空格,其他占位符都会过滤空格
2.gets
gets(str); //这个能接收空格
总结:①puts和gets是处理字符串的专用函数,不会屏蔽空格,只有遇到enter键才停止,输出时会自动换行
②printf遇到\0则结束。scanf遇到空格则停止存入,但仍未退出,只有遇到enter键才退出
3. strlen( )求字符串的长度(应用:字符串的倒置)
1.使用头文件#include<string.h>, 获得字符串的长度 len = strlen(str);//不包含’\0',只记录有效长度
2.代码:
结果:
注:
sizeof("str"); //获得 str在内存中所占的字节
strlen(str); //获得str字符串的长度.\0以前的,不包含\0
4.strcpy
功能:字符串的复制
格式:strcpy (目的空间, 原字符串);
如:strcpy (str, "hello world")
注意:①\0后面的内容不会复制,\0会复制过去。(原因:①\0后面的是脏数据,复制过来没有意义;②\0复制过来会浪费更多时间,降低效率)
②目的空间要能存得下原字符串,如果目的空间小,会越界访问。以下函数会打印两遍”hello world“
5.strcat
功能:字符串的拼接(拼接到第一个字符串的末尾)
使用示例: strcat(str1,str2);
strcat(str1,"hello");
注意:拼接后目的空间不要越界
6.strcmp
功能:字符串的比较(判断两个字符串是否相同)
若相同则返回0,不相同则返回非零值
若第一个字符串 > 第二个字符串,返回大于0 的值
若第一个字符串 < 第二个字符串,返回小于0 的值
使用示例: strcmp(str1,str2);
strcmp(str1,"hello");
注意:
字符串比较大小:实质是,从左到右,直到两个字符串不相同,则比较谁的ascii码值大,则哪个字符串就大
字符串比较大小的结果:返回第一个的字符-第二个的字符的差值
7.字符串的遍历
方法:定义下标,通过让下标值增大访问所以元素
程序示例:
char str[32] = {"hello world"};
int i = 0;
while(str[i] != '\0')
{
}
总结:
今日的重点有:①字符型数组的概念、定义、元素的访问、初始化、存储
②一维字符型数组的常用函数:printf,scanf ,gets,puts,strlen,strcpy,strcat,strcmp
好啦,今天的嵌入式自学笔记就到这儿啦~
明天继续学习 “C语言:二维数组” ,想看的宝子记得点个关注,不然刷着刷着就找不到我啦~
更多推荐




所有评论(0)