目录

一、一维字符型数组

二、一维字符型数组(字符串)的常用函数

总结:


一、一维字符型数组

        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语言:二维数组” ,想看的宝子记得点个关注,不然刷着刷着就找不到我啦~

                                                                                                                ​​​​​​​                                                                 

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐