【C】字符串函数——大全(简洁,精炼,初学者)(一)

简介: 【C】字符串函数——大全(简洁,精炼,初学者)

一.C语言对字符和字符串的处理

C语言中对字符和字符串的处理很是频繁,但是C语言本身并没有字符串类型,字符串通常放在常量字符串或者字符数组中。

PS:字符串常量适用于那些对它不做修改的字符串函数

常量字符串:

"hello my friend! \0"//默认后面会有\0

字符数组:

char arr[]="welcome to my blog! \0";//默认后面会有\0

1.字符串函数的头文件

#include<string.h>

二.strlen(字符长度函数)

image.png

特性:

  • strlen的返回类型是unsigned int
  • 无符号数-无符号数还是无符号数

使用场景:

image.png

1.模拟实现strlen

原理:指针-指针

注意点:const修饰的指针到另一个指针时,也应该受保护(+const)

image.png

三.strcpy(字符拷贝函数)

image.png

注意:返回类型为char*打印时可以接受其返回值

image.png

使用场景:

image.png

1.strcpy的2种特性


一.strcpy会拷贝"\0"

如果不拷贝\0会报错(越界)

image.png

二.能越界访问,但报错

虽然能成功拷贝,但仍然会报错(要保证目标空间足够大·)

image.png

2.场景:拷贝放到常量字符串

前提条件:(目标指针指向的空间必须可修改

image.png

3.模拟实现strcpy

原理:逐个改变目的地的地址,即指针(地址)覆盖image.png

四.stract(字符追加函数)

PS:与strcpy类似,参数部分都是前目的地后源

使用场景:

特性:

  • 追加字符串时,源字符串必须有\0
  • 会覆盖待追加代码的\0(从第一个\0处开始追加)

1.模拟实现strcat

比模拟实现strcpy多了一步:设置cur指针,重新找拼接的头指针(覆盖掉源代码的\0)

2.(特性实例)情景1:能否实现自己追加自己?NO

分析:

  • stract的特性之一就是会覆盖待追加代码的"\0"


五.strcmp(字符比较函数)

注意点:

  • 比较对应位置上字符的Ascall值的大小
  • 一定要有‘\0’,即终止符号
  • 与字符串的长短无关 !!!!!!!!!!!!

使用场景:

1.模拟实现strcmp

原理:逐字符比较

image.png

六.strcpy,strcmp,strcat与strncpy,strncmp,strncat比较

直观区别:


长度受限制的字符串函数

长度不受限制的字符串函数

PS:strncpy,strncat不仅是长度受限与否的区别,还有特性上的区别  

七.strncpy

应用场景:


一:情景:strncpy遇到过分拷贝时的运作

strncpy特性:不够拷贝的部分,补上" \0"

相关文章
|
Java Linux 程序员
maven构建docker镜像三部曲之二:编码和构建镜像
用docker-maven-plugin插件来构建本地的docker镜像
1268 0
maven构建docker镜像三部曲之二:编码和构建镜像
|
开发工具 C语言 Windows
【Qt 学习笔记】Qt 开发环境的搭建 | Qt 安装教程
【Qt 学习笔记】Qt 开发环境的搭建 | Qt 安装教程
1556 0
|
2月前
|
监控 Linux 调度
【赵渝强老师】Docker容器的资源管理机制
本文介绍了Linux CGroup技术及其在Docker资源管理中的应用。通过实例演示了如何利用CGroup限制应用程序的CPU、内存和I/O带宽使用,实现系统资源的精细化控制,帮助理解Docker底层资源限制机制。
269 6
|
监控 JavaScript 前端开发
前端的混合之路Meteor篇(六):发布订阅示例代码及如何将Meteor的响应数据映射到vue3的reactive系统
本文介绍了 Meteor 3.0 中的发布-订阅模型,详细讲解了如何在服务器端通过 `Meteor.publish` 发布数据,包括简单发布和自定义发布。客户端则通过 `Meteor.subscribe` 订阅数据,并使用 MiniMongo 实现实时数据同步。此外,还展示了如何在 Vue 3 中将 MiniMongo 的 `cursor` 转化为响应式数组,实现数据的自动更新。
233 2
|
12月前
|
人工智能 自然语言处理 搜索推荐
智能语音助手的发展与未来:开启人机交互的新篇章
智能语音助手的发展与未来:开启人机交互的新篇章
2016 28
|
运维 监控 Cloud Native
深入理解云原生技术:从概念到实践
在数字化转型的浪潮中,云原生技术如同星辰指引航船,引领企业驶向灵活、高效的未来。本文将深入浅出地探讨云原生的核心理念、关键技术及应用实例,旨在为读者揭开云原生的神秘面纱,展示其如何重塑软件开发与运维模式。通过理论与实践的结合,我们将一窥云原生技术的强大动力和无限可能。
|
大数据 BI 数据采集
推荐 | AllData开源数据中台项目
AllData是一个可定义的数据中台,采用Wujie微前端架构和可插拔后端设计,提供全链路数字化解决方案。它包括数据平台、数据中台、机器学习平台和大模型应用,旨在连接和优化数据处理流程。项目已在GitHub上开源(https://github.com/alldatacenter/alldata),并提供了详细的官方文档和安装指南。AllData 2.0版本针对商业版和开源版的功能进行了区分,商业版在稳定性方面表现更优,同时增加了数据平台等功能。项目团队积极参与开源社区,致力于提供稳定的架构和不断改进的用户体验。
推荐 | AllData开源数据中台项目
|
自然语言处理 JavaScript 开发者
通义灵码插件:VSCode 的智能编程助手
通义灵码插件:VSCode 的智能编程助手
9430 4
|
中间件 Python
理解Django中间件及其应用实例
理解Django中间件及其应用实例
187 0
|
Python
结构化程序设计方法
结构化程序设计方法是一种软件开发的原则和技巧,旨在创建易于理解、维护和修改的高质量程序。它强调使用清晰的控制结构、模块化设计和数据抽象来减少程序的复杂性,从而提高程序的可靠性和效率。本文将详细介绍结构化程序设计方法的核心概念,并通过一个示例代码来展示其应用。
624 1