当前位置: 首页 > news >正文

嵌入式基础:Linux C语言:Day7

重点:

strlen()函数\strcpy()函数\strcat实现\strcmp()实现

数组的清空:bzero函数、memset函数

一、字符数组

<1> 概念

字符数组本质上就是一个数组,保存一个个字符,也一般用来保存字符串

字符串由多个字符组成的一个字符组,一般用“ ”括起来

<2> 定义: char 数组名[数组长度];

<3> 初始化:

单字符全部初始化

单字符部分初始化

不填数组长度的初始化

以字符串对字符数组初始化

        以字符串对字符数组初始化:不加{}

二、字符串的输入输出

<1> 字符串的输出

printf()输出: printf("%s\n",字符串首地址)

puts输出: puts(字符串首地址/字符数组名)

<2> 字符串的输入

gets()输入: gets(保存输入的字符串的空间首地址/数组名)

scanf()输入

三、对字符串的相关处理函数的使用

<1> 数组清空:所谓的数组清空就是让数组中所有的成员数据全部变为0

定义数组时就初始化为0

bzero()函数

#include <strings.h>

 void bzero(void *s, size_t n);

 功能:实现数组的清空

 参数:

     s:要清空的数组首地址(数组名)

     n:填写数组大小就可以

返回值:无

ex;

bzero(数组名,sizeof(数组名));

memset()函数

void *memset(void *s, int c, size_t n);

功能:将指定的内存中数据设置为指定大小,可以用于数组清空

6.2 strlen()函数计算数组的长度

#include <string.h>

size_t strlen(const char *s);

功能:计算字符串的长度,'\0'之前的字符串数量

参数:

    s:要计算长度的字符串首地址(数组名)

返回值:成功会返回计算到的字符串长度

6.3 strcpy()函数实现字符串的复制

char *strcpy(char *dest, const char *src);

功能:将一个字符串复制到另一个数组空间中

参数:

    dest:目标空间首地址

    src:要复制的字符串的首地址

    

返回值:函数调用成功返回一个指向复制后字符串的首地址

ex:

  char buf[]="hello world";

  char buf1[20]={0};

  strcpy(buf1,buf);//将buf中保存的字符串复制到buf1中

 char *strncpy(char *dest, const char *src, size_t n);

 功能:实现复制指定大小的字符串

 参数:

     desc:保存复制后字符串的数组首地址

     src:原字符串首地址

     n:复制原字符串前n个字符到目标数组中

返回值:函数调用成功返回一个指向复制后字符串的首地址

strcat实现字符串的拼接

#include <string.h>

char *strcat(char *dest, const char *src);

 功能:实现两个字符串的拼接

 参数:

     desc:要拼接的第一个字符串首地址,也是拼接后字符串首地址

     src:要拼接的第二个字符串首地址     

返回值:成功返回拼接后字符串的首地址

char *strncat(char *dest, const char *src, size_t n);

功能:实现指定长度的字符串的拼接,将src字符串前n个字符拼接到desc字符串的

    后面

参数:

    desc:要拼接的第一个字符串首地址,也是拼接后字符串首地址

     src:要拼接的第二个字符串首地址

     n:要拼接的src中字符的个数

返回值:成功返回拼接后字符串的首地址

strcmp()实现字符串的比较

#include <string.h>

int strcmp(const char *s1, const char *s2);

功能:实现两个字符串的比较

参数:

    s1:要比较的第一个字符串

    s2:要比较的第二个字符串

返回值:    

    当两个字符串相等时,函数返回0

    当s1字符串比s2字符串大,此时返回一个正整数

    当s2字符串比s2字符串大,此时返回一个负整数

 int strncmp(const char *s1, const char *s2, size_t n);

功能:进行两个字符串前n个字符的比较

参数:

    s1:要比较的第一个字符串

    s2:要比较的第2个字符串

    n:要比较两个字符串前n个字符

返回值:    

    当两个字符串相等时,函数返回0

    当s1字符串比s2字符串大,此时返回一个正整数

    当s2字符串比s2字符串大,此时返回一个负整数

二、二维字符数组

<1> 概念:本质就是一个二维数组

<2> 初始化

只讨论保存字符串时的初始化;

        char 数组名[行数][列数]={“字符串1”,“字符串2”,......}

<3> 输出:输出各行的方法:以字符串形式输出,以下标代表各行:

name[0]:第0行内容

name[2]:第1行内容

name[3]:第3行内容

三、指针

<1> 指针就是地址

<2> 定义 数据类型* 指针变量名

<3> 初始化

NULL

int *p=&a 存入某个地址

int *p=q: 另一个指针变量给其初始化

<4> 空指针和野指针

空指针:用NULL初始化的指针

野指针:没初始化的指针为野指针;严重可导致程序崩溃;应避免野指针的出现

<5> 通过指针访问变量的数据

        在除了定义指针情况外,再次使用*,表示该指针指向内存的数据

<6> 指针的大小

32位系统中,指针为4字节;64位系统中,指针为8字节大小

http://www.lryc.cn/news/500728.html

相关文章:

  • Tablesaw封装Plot.ly实现数据可视化
  • RAG与Embedding:现代NLP的核心技术
  • 力扣每日一题 - 1812. 判断国际象棋棋盘中一个格子的颜色
  • Map 那些事儿
  • GCP Case:MountKirk Games
  • [创业之路-187]:《华为战略管理法-DSTE实战体系》-1-从UTStarcom的发展历程,如何辩证的看企业初期发展太顺利中的危机
  • 高级数据结构-树状数组
  • LeetCode279. 完全平方数(2024冬季每日一题 27)
  • Scala 隐式转换
  • K8S命令部署后端(流水线全自动化部署)
  • Ubuntu中配置交叉编译工具的三条命令的详细研究
  • 【PyQt5教程 二】Qt Designer 信号与槽的使用方法及PyQt5基本小部件说明
  • 编程语言中接口(Interface)介绍
  • 算法学习之贪心算法
  • 【jvm】垃圾回收的优点和原理
  • YOLO系列发展历程:从YOLOv1到YOLO11,目标检测技术的革新与突破
  • 深入浅出:序列化与反序列化的全面解析
  • word实践:正文/标题/表图等的共用模板样式设置
  • Blender中使用BlenderGIS插件快速生成城市建筑模型
  • 【单元测试】单元测试的重要性
  • Codeforces Round 992 (Div. 2)
  • el-table一键选择全部行,切换分页后无法勾选
  • 负载均衡最佳实践及自定义负载均衡器
  • 大模型 LMDeploy 量化部署
  • 算法设计5_分支限界法
  • 2025年人工智能专业可以考哪些证书呢?
  • 仿真技术助力高尔夫球打破传统设计局限,实现球杆强大的功能
  • 微前端架构学习笔记
  • DApp开发:从合约到系统快速上线解决方案
  • react 中 useState 中的 set 方法异步解决