11.字符函数和字符串函数

server/2025/3/4 9:36:25/

字符函数

  • 11.1求字符串长度
    • strlen
      • strlen模拟
  • 11.2长度不受限制的字符串函数
    • strcpy

11.1求字符串长度

strlen

Get the length of a string.
size_t strlen( const char *string );

typedef unsigned int size_t;
strlen 返回值为 unsigned int
strlen返回字符串中 \0 前面出现的字符个数
参数指向的字符串必须要以\0 结束

int main() {char arr[] = "hello ruarua";printf("%u\n", strlen(arr));return 0;
}

strlen模拟

//方案1.计数器
size_t my_strlen(const char* str){int count = 0;while (*str != '\0') {count++;str++;}return count;
}
//方案2.指针-指针
size_t my_strlen(const char* str) {char* end = str;while (*end != '\0')end++;return end - str;
}
//方案3.递归
size_t my_strlen(const char* str) {if (*str == 0)return 0;elsereturn 1 + my_strlen(str + 1);
}int main() {int sz = my_strlen("ruarua");printf("%u\n", sz);//%u unsigned intreturn 0;
}

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

strcpy

Copy a string.
char *strcpy( char *strDestination, const char *strSource );

源字符串必须以\0结束,\0会拷贝到目标空间。
目标空间必须足够大,以确保能存放源字符串。
目标空间必须可修改。

int main() {char arr1[20] = { 0 };char arr2[] = "hello ruarua";//char arr2[] = {'r','u','a'};//没有'\0' errstrcpy(arr1, arr2);printf("%s\n", arr1);return 0;
}

模拟strcpy

#include <assert.h>
char* my_strcpy(char* dest, const char* src) {assert(dest != NULL);assert(src != NULL);char* ret = dest;while (*src != '\0') {*dest = *src;dest++;src++;}*dest = *src;//copy '\0'return ret;
}
//简化-->
char* my_strcpy(char* dest, const char* src) {assert(dest != NULL);assert(src != NULL);char* ret = dest;while (*dest++ = *src++) {;}return ret;
}int main() {char arr1[20] = { 0 };char arr2[] = "hello ruarua";my_strcpy(arr1, arr2);printf("%s\n", arr1);return 0;
}

http://www.ppmy.cn/server/172298.html

相关文章

IDEA入门及常用快捷键

IDEA是java常用的IDE。当run一个.java文件时&#xff0c;其实是经历了先编译为.class&#xff0c;再运行的过程。 在project文件夹中&#xff0c;out文件夹存储编译的.class文件&#xff0c;src文件夹存储.java代码文件。 设置自动导包 快捷键&#xff1a; 格式化快捷键&…

Unity插件-Mirror使用方法(三)组件介绍(Network Manager)

目录 一、插件介绍 二、主要组件 三、Network Manager 1、组件介绍 2、核心功能 1&#xff09;传输层&#xff08;Transports&#xff09; 2&#xff09;游戏状态管理 3&#xff09;生成管理&#xff08;Spawn Management&#xff09; 玩家预制件 预制件注册 出生点…

mysql服务层介绍,NOSQL+SQL接口(nosql介绍),语法分析器,预处理器,优化器(优化的必要性,基于成本的优化器),缓存(弊端)

目录 mysql服务层 介绍 服务管理和公共组件 备份 NOSQL,SQL接口 介绍 nosql Parser模块(语法分析器) 介绍 词法分析 语法分析 示例 预处理器 引入 介绍 优化器 介绍 优化的必要性 基于成本的优化器 缓存 介绍 弊端 mysql服务层 介绍 数据库服务层是整个…

linux下自旋锁(spin_lock)

文章目录 Linux自旋锁&#xff1a;单核与多核环境下的实现差异与核心原理 &#x1f5a5;️&#x1f512;一、自旋锁的核心特性 ⚙️&#x1f3af; 适用场景&#xff1a; 二、单核环境下的自旋锁实现 &#x1f6d1;1. **实现原理** &#x1f504;2. **关键代码解析** &#x1f4…

探索未来金融世界的钥匙——代币开发

在数字经济飞速发展的今天&#xff0c;区块链技术与加密货币的结合催生了一个崭新的领域——代币开发。这一领域不仅重新定义了资金流动的方式&#xff0c;更为全球金融体系带来了前所未有的透明度和效率&#xff0c;成为探索未来金融世界的钥匙。 一、代币开发的定义与意义 代…

Java 8 中,可以使用 Stream API 和 Comparator 对 List 按照元素对象的时间字段进行倒序排序

文章目录 引言I 示例对象II List 按时间字段倒序排序: 使用 `Stream` 和 `Comparator` 排序方法 1:使用 `Comparator.comparing`方法 2:使用 `Comparator.reversed`方法 3:自定义 `Comparator`输出结果III 注意事项**时间字段类型**:**空值处理**:IV 总结引言 案例:在线用…

【计算机网络——概述】

1.计算机网络在信息时代中的作用 1.1三网融合 “三网融合”的三网——电信网络、有线电视网络、计算机网络&#xff0c;是将前两个融入到了计算机网络。 1.2互联网两个重要基本特点 1.连通性&#xff1a;就是互联网使上网用户之间&#xff0c;不管相聚多远&#xff0c;都可以交…

虚拟主机 VirtualHost

一、虚拟主机介绍 作用&#xff1a;在一台服务器运行多个网站 注意&#xff1a; 建议使用虚拟主机的方式部署网站&#xff0c;方便后续扩展 类型&#xff1a; 1、基于名称的虚拟主机 2、基于IP地址的虚拟主机 配置虚拟主机语法结构&#xff1a; <VirtualHost IP:port>…