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

c语言-string.h库函数初识

目录

  • 前言
  • 一、库函数strlen()
    • 1.1 strlen()介绍
    • 1.2 模拟实现strlen()
  • 二、库函数strcpy()
    • 2.1 strcpy()介绍
    • 2.2 模拟实现strcpy()
  • 三、库函数strcmp()
    • 3.1 strcmp()介绍
    • 3.3 模拟实现strcmp()
  • 总结


前言

本篇文章介绍c语言<string.h>头文件中的库函数,包含strlen()、strcpy()、strcmp()


一、库函数strlen()

1.1 strlen()介绍

库函数strlen()是一个求c语言字符串长度的一个实现。下面是cplusplus网站关于这个库函数的介绍以及使用。
在这里插入图片描述
作用:获取字符串长度
c语言字符串的长度由空字符决定计算是否终止,即\0。
c语言计算字符串长度的方法是从字符串第一个字符开始计算直到遇到空字符结束不包含空字符本身)。
返回值类型: size_t,size_t在C语言被定义为unsigned int
注意:不要将字符数组长度和字符串长度相混淆。例如

在这里插入图片描述

1.2 模拟实现strlen()

通过模拟实现strlen(),可以加深对这个函数的理解,实现代码和测试截图如下:

#include<string.h>
#include<assert.h>
//3.模拟实现strlen
int my_strlen(const char* str)
{assert(str != NULL);  //为真往下走,为假停止int count = 0;while (*str != '\0'){count++;str++;}return count;
}

测试截图:
在这里插入图片描述


二、库函数strcpy()

2.1 strcpy()介绍

库函数strcpy()是一个c语言字符串拷贝的实现。下面是cplusplus网站关于这个库函数的介绍以及使用。
在这里插入图片描述
作用:字符串拷贝
将指针source指向的字符串内容复制到destination指针指向的字符数组中(包括空字符\0)
注意:
为了避免溢出,destination指向的字符数组长度应该至少可以容纳source指向的字符串(包含\0)。
返回值类型: char*
返回值:destination
使用例子如下:
在这里插入图片描述

2.2 模拟实现strcpy()

通过模拟实现strcpy(),可以加深对这个函数的理解,代码实现和测试截图如下:

//模拟实现strcpy
char* my_strcpy(char* destination, const char* source)
{assert(destination != NULL); //空指针判断assert(source != NULL);      //空指针判断char* destination_start = destination; //保存destinaiton的起始位置while((*destination++ = *source++) != '\0'){NULL;}return destination_start;
}

测试结果截图:

在这里插入图片描述
问题:返回destination的目的是什么?
为了实现函数的链式调用

	int length = strlen(my_strcpy(destination, source));

三、库函数strcmp()

3.1 strcmp()介绍

库函数strcmp()是一个进行两个字符串比较的实现。下面是cplusplus网站关于这个库函数的介绍以及使用。
在这里插入图片描述
作用:两个字符串比较
这个函数从两个字符串的第一个字符开始比较,如果当前比较的两个字符相等,则继续比较两个字符串的下一个字符,直到两个字符不同或者遇到了空字符
根据返回值的大小确定两个字符串的关系:

返回值含义
<0两个字符串第一个不相同的字符,str1指向的字符串的字符ASCII值小于str2
0两个字符串的内容相同
>0两个字符串第一个不相同的字符,str1指向的字符串的字符ASCII值大于str2

使用例子如下:
在这里插入图片描述

3.3 模拟实现strcmp()

通过模拟实现strcmp(),可以加深对这个函数的理解,代码实现和测试截图如下:

int my_strcmp(const char* str1, const char* str2)
{assert((str1 != NULL) && (str2 != NULL)); //空指针判断while ((*str1 == *str2) && (*str1 != '\0')){str1++;str2++;}return (*str1 - *str2);
}

测试结果截图:
在这里插入图片描述


总结

本篇文章介绍了c语言<string.h>头文件中的库函数,对strlen()、strcpy()、strcmp()三个函数进行介绍以及展示了如何使用它们,最后,为了加深对这三个函数的理解,分别模拟实现这三个函数。

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

相关文章:

  • PyTorch官网demo解读——第一个神经网络(4)
  • TCP发送和接受数据
  • SpringBoot快速集成多数据源(自动版)
  • mysql原理--Explain详解
  • 阶段五-JavaWeb综合练习-学生管理系统
  • DevC++ easyx实现视口编辑--像素绘图板与贴图系统
  • Visual studio 2010的安装与使用
  • Download Monitor Email Lock下载监控器邮件锁插件
  • 在vscode中创建任务编译module源文件
  • element ui级连选择,lazyLoad选择地区
  • 软件测试基础知识详解
  • Linux之进程管理
  • 动画墙纸:将视频、网页、游戏、模拟器变成windows墙纸——Lively Wallpaper
  • 187.【2023年华为OD机试真题(C卷)】阿里巴巴找黄金宝箱(I)(贪心算法-JavaPythonC++JS实现)
  • Ubuntu22.04系统安装软件、显卡驱动、cuda、cudnn、pytorch
  • 基于矩阵乘的CUDA编程优化过程
  • layuiadmin新建tabs标签页,点击保存,打开新的标签页并刷新
  • Rxjs概念 学习
  • pillow像型学操作(转载笔记) --- 西北乱跑娃
  • JS作用域链和闭包
  • 【Spring实战】15 Logback
  • Stable Diffusion WebUI安装合成面部说话插件SadTalker
  • CSS 纵向顶部往下动画
  • 科普:敏捷估算为什么用斐波那契数列
  • HarmonyOS资源分类与访问
  • message: 没有找到可以构建的 NPM 包,请确认需要参与构建的 npm 都在 `miniprogra
  • 基于C#的机械臂欧拉角与旋转矩阵转换
  • 【百度前端三面面试题】
  • 【Java面试题】HTTP与 HTTPS 的区别
  • vue3 v-model语法糖