【C语言】字符函数和字符串函数(含模拟)

前言:
在做OJ题或阅读代码时或多或少会遇到一些字符函数和字符串函数,
如果不认识或不熟悉就会造成不便,
本篇文章主要是为了这方面而存在,
此篇介绍各个字符串的功能与使用方法,
下一篇会讲解如何模拟这些函数

重点:

重点介绍处理字符和字符串的库函数的使用和注意事项

一一一一一一一一分割线一一一一一一一一一

目录

  • 1.函数介绍:
    • 1.1 strlen
    • 1.2 strcpy
    • 1.3 strcat
    • 1.4 strcmp
  • 2.库函数的模拟实现:

1.函数介绍:

1.1 strlen

在这里插入图片描述

我们可得这个函数是求在字符串开始与'\0'之间的字符串长度

代码示例:

#include <stdio.h>
int main()
{const char* str1 = "abcdef";const char* str2 = "bbb";printf("%d\n", strlen(str1));printf("%d\n", strlen(str2));if (strlen(str2) - strlen(str1) > 0){printf("str2>str1\n");}else{printf("srt1>str2\n");}return 0;
}

结果:
在这里插入图片描述
解释:

这里的6和3容易理解,那么str2>str1怎么解释?
因为strlen返回值类型为size_t类型,为无符号整形
即相减的结果虽然为一个负数,但负数的无符号整形显然是巨大的正数
故大于

此函数的注意事项:
1.字符串以 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前面出现的字符个数(不包含 ‘\0’ )。
2.参数指向的字符串必须要以 ‘\0’ 结束。
3.注意函数的返回值为size_t,是无符号的( 易错 )

一一一一一一一一分割线一一一一一一一一一

1.2 strcpy

在这里插入图片描述

我们可以知道此函数是为了拷贝字符串的

代码示例:

#include<string.h>int main()
{char str1[20] = { 0 };char str2[] = "hello world";strcpy(str1, str2);printf("%s\n", str1);return 0;
}

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

此函数的注意事项:
1.源字符串必须以 ‘\0’ 结束。
2.会将源字符串中的 ‘\0’ 拷贝到目标空间。
3.目标空间必须足够大,以确保能存放源字符串。
4.目标空间必须可变。

一一一一一一一一分割线一一一一一一一一一

1.3 strcat

在这里插入图片描述

上边两个函数很容易就可以根据形式看出大概意思,
str代表字符串,那么cat代表什么?
他代表Catenate,连接的缩写,也就是追加字符串的意思

代码示例:

int main()
{char str1[20] = "abc";char str2[] = "dfg";strcat(str1, str2);printf("%s\n", str1);return 0;
}

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

此函数的注意事项:
1.源字符串必须以 ‘\0’ 结束。
2.目标空间必须有足够的大,能容纳下源字符串的内容。
3.目标空间必须可修改。
4.不可以自己追加自己。
解释:关键在于 '\0',因为
在这里插入图片描述

一一一一一一一一分割线一一一一一一一一一

1.4 strcmp

在这里插入图片描述

我们可以得出此函数是为为比较字符串函数

代码示例:

int main()
{char str1[] = "abb";char str2[] = "abc";int ret =strcmp(str1, str2);printf("%d\n", ret);return 0;
}
此函数的注意事项:
1.第一个字符串大于第二个字符串,则返回大于0的数字
2.第一个字符串等于第二个字符串,则返回0
3.第一个字符串小于第二个字符串,则返回小于0的数字
4.比较字符串是从头开始逐一比较每个字符的ASCII码值,相等就继续向下比较,直到输出

努力更新中。。。

2.库函数的模拟实现:

努力更新中。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/140011.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Java Fluent编程

背景 Fluent Api最早是由Martin Fowler1提出的一种简洁的编程风格, 其每一步的执行都返回一个对象并可用于进一步的方法调用. 这样的编程风格可以很好的简化某些领域的开发, 并显著地提高代码的可读性和可维护性. 无论是在Java的流式api中, 还是众多DLS中都有它的身影. 原因主…

备受以太坊基金会青睐的 Hexlink,构建亿级用户涌入 Web3的入口

早在 2021 年 9 月&#xff0c;以太坊创始人 Vitalik Buterin 就曾提出了 EIP-4337&#xff08;账户抽象&#xff09;提案&#xff0c;并在去年 10 月对该提案进一步更新&#xff0c;引发行业的进一步关注。在今年 3 月&#xff0c;EIP-4337 提案正式通过审计&#xff0c;并成为…

SpringBean的生命周期

SpringBean的生命周期 SperingBean的生命周期是从Bean实例化之后&#xff0c;即通过反射创建出对象之后&#xff0c;到Bean成为一个完整对象&#xff0c;最终存储到单例池中&#xff0c;这个过程被称为Spring Bean的生命周期。Spring Bean的生命周期大体上分为三个阶段 Bean的…

初识Java 10-3 集合

目录 Collection和Iterator的对比 for-in和迭代器 总结图 本笔记参考自&#xff1a; 《On Java 中文版》 Collection和Iterator的对比 Collection是所有序列集合的共同根接口。因此&#xff0c;可以认为它是一个为表示其他接口之间的共性而出现的“附属接口”。 java.util.Ab…

Git大全

目录 一、Git概述 1.1Git简介 1.2Git工作流程图 1.3查看Git的版本 1.4 Git 使用前配置 1.5为常用指令配置别名&#xff08;可选&#xff09; 1.5.1打开用户目录&#xff0c;创建 .bashrc 文件 1.5.2在 .bashrc 文件中输入如下内容&#xff1a; 1.5.3打开gitBash&#xff0c;执行…

C++:类中的静态成员函数以及静态成员变量

一、静态成员变量 静态成员&#xff1a;在类定义中&#xff0c;它的成员&#xff08;包括成员变量和成员函数&#xff09;&#xff0c;这些成员可以用关键字static声明为静态的&#xff0c;称为静态成员。 静态成员变量需要在类外分配空间&#xff0c;static 成员变量是在初始…

【解决方案】edge浏览器批量添加到集锦功能消失的解决方案

edge的集锦功能很好用&#xff0c;右键标签页会出现如下选项&#xff1a; 但在某次edge更新后&#xff0c;右键标签页不再出现该选项&#xff1a; 这里可以参考为什么我的Edge浏览器右键标签页没有“将所有标签页添加到集锦”功能&#xff1f; - Microsoft Community 一文提出…

pcl--第十节 点云曲面重建

曲面重建技术在逆向工程、数据可视化、机器视觉、虚拟现实、医疗技术等领域中得到了广泛的应用 。 例如&#xff0c;在汽车、航空等工业领域中&#xff0c;复杂外形产品的设计仍需要根据手工模型&#xff0c;采用逆向工程的手段建立产品的数字化模型&#xff0c;根据测量数据建…

超级好用绘图工具(Draw.io+Github)

超级好用绘图工具&#xff08;Draw.ioGithub&#xff09; 方案简介 绘图工具&#xff1a;Draw.io 存储方式&#xff1a; Github 1 Draw.io 1.2 简介 ​ 是一款免费开源的在线流程图绘制软件&#xff0c;可以用于创建流程图、组织结构图、网络图、UML图等各种类型的图表。…

windows server 2019 、2012等服务器查看系统和应用程序日志

查看windows系统日志 点击左下角的windows按钮&#xff0c;输入事件两个字&#xff0c;会显示时间查看器 点击事件查看器&#xff0c;windows日志下面可以卡到系统日志和应用程序的日志 筛选时间范围内的日志 修改记录时间 选组自定义范围 选择事件事件 输入事件范围&#xff…

C语言大佬的必杀技---宏的高级用法

C语言大佬的必杀技—宏的高级用法 目录: 字符串化标记的拼接宏的嵌套替换多条语句防止一个文件被重复包含宏和函数的区别 可能大家在学习的时候用得比较少&#xff0c;但是在一些代码量比较大的时候&#xff0c;这样使用&#xff0c;可以大大的提高代码的可读性&#xff0c;…

从零开始:新手快速在国产操作系统中搭建高可用K8S(V1.28)集群落地实践

微信改版了&#xff0c;现在看到我们全凭缘分&#xff0c;为了不错过【全栈工程师修炼指南】重要内容及福利&#xff0c;大家记得按照上方步骤设置「接收文章推送」哦~ 关注【公众号】回复【学习交流群】加入【SecDevOps】学习交流群! 文章目录&#xff1a; 本文为作者原创文章…

day03_基础语法

今日内容 零、复习昨日 一、Idea安装&#xff0c;配置 二、Idea使用 三、输出语句 四、变量 五、数据类型 附录: 单词 零、 复习昨日 1 装软件(typora,思维导图) 2 gpt(学会让他帮你解决问题) 3 java发展(常识) 4 HelloWorld程序 5 编码规范 6 安装jdk,配置环境变量 电脑常识 任…

STM32-无人机-电机-定时器基础知识与PWM输出原理

电机控制基础——定时器基础知识与PWM输出原理 - 掘金单片机开发中&#xff0c;电机的控制与定时器有着密不可分的关系&#xff0c;无论是直流电机&#xff0c;步进电机还是舵机&#xff0c;都会用到定时器&#xff0c;比如最常用的有刷直流电机&#xff0c;会使用定时器产生PW…

在GIS(地理信息系统)中,常见的地理文件记录

在GIS&#xff08;地理信息系统&#xff09;中&#xff0c;常见的地理文件包括以下几种&#xff1a; .cpg&#xff08;Code Page文件&#xff09;&#xff1a;这个文件是指定地理数据文件编码的文件&#xff0c;它告诉软件如何正确地读取和解释地理数据文件中的字符编码。比如…

海外代理IP是什么?如何使用?

一、海外代理IP是什么&#xff1f; 首先&#xff0c;代理服务器是在用户和互联网之间提供网关的系统或路由器。它是一个服务器&#xff0c;被称为“中介”&#xff0c;因为它位于最终用户和他们在线访问的网页之间。 海外IP代理是就是指从海外地区获取的IP地址&#xff0c;用…

Linux学习-HIS系统部署(1)

Git安装 #安装中文支持&#xff08;选做&#xff09; [rootProgramer ~]# echo $LANG #查看当前系统语言及编码 en_US.UTF-8 [rootProgramer ~]# yum -y install langpacks-zh_CN.noarch #安装中文支持 [rootProgramer ~]# vim /etc/locale.co…

差值结构的顺序偏好

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有3个节点&#xff0c;AB训练集各由5张二值化的图片组成&#xff0c;让A 中有5个点&#xff0c;B中有1个点&#xff0c;且不重合&#xff0c;统计迭代次数并排序。 第一种情况 差值结构 迭代次数 L E - - 2 10491.…

python随手小练1

题目&#xff1a; 使用python做一个简单的英雄联盟商城登录界面 具体操作&#xff1a; print("英雄联盟商城登录界面") print("~ * "*15 "~") #找其规律 a "1、用户登录" b "2、新用户注册" c "3、退出系统&quo…

手动部署 OceanBase 集群

手动部署一个 OB 单副本集群&#xff0c;包括一个 OBProxy 节点 部署环境 服务器信息 IP地址 192.168.0.26 网卡名 ifcfg-enp1s0 OS Kylin Linux Advanced Server release V10 CPU 8C 内存 32G 磁盘1 本地盘 /data/1 磁盘2 本地盘 /data/log1 机器和角色划分 …