库函数strlen的使用及模拟实现

浙政钉(专有钉钉)门户免登(超详细) 钉钉家族 介绍浙政钉门户免登之前,首先搞清楚几个软件的关系,软件分别是:钉钉,专有钉钉,浙政钉 钉钉 是阿里巴巴集团专为中小企业打造的沟通和协同的多端平台。 专有钉钉 原名 政务钉钉,有更开放的设计能力、集成能力、更结构化协同产品、更定制化开发平台。支持专有化部署,数据落本地,更安全、客户可对该产品持牌运营、结构化编排,协助构建本地应用中心、提供移动应用全面安全保障体系。 浙政钉 为规范浙政钉整体架构体系,按照统分结合原则,由省政府办公厅统一设计整体工作界面和系统框架,统筹指导全省统建应用建设,各单 阅读详情

一、什么是strlen

strlen是一个C语言中常用的字符串处理函数,用于计算一个以空字符('\0')为结尾的字符串中的字符个数,即字符串的长度,不包括结尾的空字符。

这个函数通常备用哦过来确定字符串的实际长度,一边进行字符串操作或内存分配。在C语言中,字符串实际上是以字符数组的形式存储在内存中,以空字符结尾作为结束标记。strlen函数通过遍历字符串,直到遇到空字符为止,从而确定字符串的长度。

下面是strlen函数的原型:

size_t strlen(const char *str);

str是一个以空字符结尾的字符串。返回值是一个size_t类型的整数,表示字符串中非空字符的数量,不包括结尾的空字符。

二、如何使用strlen

以下是一个简单的示例,演示了如何使用strlen函数

//库函数strlen的使用
#include<string.h>//使用strlen库函数时需要包含的头文件

int main()
{
	char ch[] = "Hello world!";

	size_t len = strlen(ch);//strlen返回的是一个size_t类型的数

	printf("%zu", len);//%zu用于格式化无符号整数size_t

	return 0;
}

三、strlen函数的模拟实现

以下代码演示了如何模拟实现strlen

//模拟实现库函数strlen
//strlen的原型:size_t strlen(const char *str);

//计数器方法
#include<assert.h>
size_t mystrlen1(const char* str)
{
	assert(str != NULL);

	int count = 0;

	while (*str != '\0')//没有遇到空字符时,计数器和指针都++
	{
		count++;
		str++;
	}

	return count;
}

//递归方法(不用创建临时变量)
size_t mystrlen2(const char* str)
{
	if (*str == '\0')
	{
		return 0;
	}
	else
	{
		return 1 + mystrlen2(str + 1);
	}
}

int main()
{
	char ch[] = "Hello world!";
	size_t ret = mystrlen1(ch);
	printf("ret = %zu\n", ret);

	return 0;
}

更多C语言相关练习请跳转:

test_c: C语言练习,包括常见语法练习以及小项目练习。 (gitee.com) 

米哈游运维面试题及参考答案 Linux 系统运行级别是用于定义系统启动时所需要达到的功能状态。运行级别 0:表示系统停机状态,用于关闭系统,是系统的关机级别。当系统切换到这个级别时,会停止所有的服务和进程,然后关闭系统。运行级别 1:也称为单用户模式。在这个级别下,系统只启动基本的系统服务和必要的进程,仅允许 root 用户登录系统进行维护操作,常用于系统出现故障需要紧急修复的情况,比如修复文件系统错误、重置 root 密码等。运行级别 2:多用户模式,但不支持网络文件系统(NFS)。 阅读详情

相关推荐

H3C防火墙旁路部署实战:网关迁移到防火墙后,如何配置DHCP和VLAN间隔离策略?

本文详细介绍了H3C防火墙旁路部署实战,重点讲解网关迁移到防火墙后的DHCP配置和VLAN间隔离策略。通过实际案例和配置示例,帮助网络工程师解决传统核心交换机架构的性能瓶颈和安全管控问题,实现精细化访问控制。

weixin_42549451的博客 416

字符处理库函数

一;字符处理库函数,头文件  #inlcude  1)isdight; (1)函数原型;int isdight (int c); (2)描述;如果c是一个数字,返回一个真值,否则返回0(假)。 2)isalphs; (1)函数原型;int isalpha(int c); (2)描述;如果c是一个字母,返回一个真值,否则返回0(假)。 3)isalnum; (1)函数原型;int i

青箫的博客 967

从零搭建ROS机械臂仿真环境:Ubuntu 20.04+Noetic下配置睿尔曼RM65的完整流程

本文详细介绍了在Ubuntu 20.04系统中,基于ROS Noetic搭建睿尔曼RM65机械臂的完整仿真环境。从环境准备、工作空间创建到MoveIt!配置与Gazebo仿真环境集成,提供了完整的流程和优化建议,帮助开发者高效实现机械臂仿真与调试。

v6b7n8m9q0的博客 933

库函数strlen的实现

/* 下面是库函数中strlen的实现,比想像的要复杂 */ size_t strlen (str) const char *str; { const char *char_ptr; const unsigned long int *longword_ptr; unsigned long int longword, himagic, lomagic;

zhjutao的专栏 1188

信息安全与技术——(十一)恶意代码检测与防范技术

恶意代码(Malicious Code )或恶意软件(Malware )主要是指以危害信息的安全等不良意图为目的的程序,它们一般潜伏在受害计算机系统中实施破坏或窃取信息。

m0_63853448的博客 5991

在hyper-v管理器中修改WSL虚拟交换机后,打开wsl闪退

此次是因为修改了WSL虚拟交换机造成的wsl打不开或闪退,还有一种可能是关闭了hyper-v造成了wsl。

DN金猿的博客 1171

库卡的功能函数和子程序(可能是完整的吧)完整列表

Hi everybody, Here is what I *think* is a complete list of all functions and subprograms defined by Kuka, even the hidden ones. As you  will see, some have a German comment attached to it. A

猫山王的专栏 1万+

【系统架构设计师-2025上半年真题】综合知识-参考答案及详解(75题完全回忆版)

【系统架构设计师-2025上半年真题】案例分析-参考答案及部分详解

数据知道的博客 1万+

模拟实现库函数strlen的三种方法

c语言标准库函数strlen的3种实现方法

qq_57238876的博客 312

智能制造——解读AI+工业设备预测性维护解决方案【附全文阅读】

摘要:本方案面向设备密集型制造企业,提供基于AI的预测性维护解决方案。通过工业物联网、大数据和AI算法,整合传感器数据与专家知识库,构建异常检测、故障诊断等模型,实现设备台账管理、智能点检等核心功能。方案配套软硬件工具矩阵,已在锂电子等行业落地应用,可降低维护成本30%以上,减少非计划停机50%,助力企业智能化转型。

cdfunlove的博客 138

CloudCompare 二次开发(16)——计算点云最值

不依赖任何第三方点云相关库,使用ClopudCompare计算点云最值。

点云侠的博客 517

模拟实现库函数strlen

模拟实现库函数strlen 定义: strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符’\0’为止,然后返回计数器值(长度不包含’\0’)。 1.具体代码 #include<stdio.h> #include<assert.h> int my_strlen( cons...

weixin_45755718的博客 279

RK+linux教程:RK3588 RGA硬件加速在YOLOv5图像预处理中的深度应用教程

摘要: 本教程深入解析了RK3588芯片的RGA硬件加速器在YOLOv5图像预处理中的应用。通过专用硬件设计,RGA支持图像缩放、边界填充等核心操作,结合零拷贝技术显著提升处理效率。重点分析了LetterBox算法的RGA实现,包括参数计算、边界填充和性能优化,并与传统CPU处理对比,展示了RGA在高分辨率图像处理中的优势。教程还提供了统一的预处理接口设计,便于在OpenCV与RGA方案间灵活切换,为RK3588平台的深度学习部署提供实用优化方案。

LXY_LOVE36的博客 975

c语言模拟实现库函数 strlen strcpy strcat strcmp strstr

解释:strlen 是求字符串长度的,求出的长度是不可能为负数 所以返回类型设置为size_t也是合情合理的 typedef unsigned int size_t\字符串已经 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包含 '\0' )。参数指向的字符串必须要以 '\0' 结束。注意函数的返回值为size_t,是无符号的strlen("abc")-strlen("abcdef") 3- 6 结果仍然是3。

2402_86583623的博客 876

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

模拟实现的strlen()和库函数strlen()的区别(C语言)

模拟实现的strlen()和库函数strlen()的区别

2402_89035880的博客 535

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

库函数的模拟实现(strlen)

我们先来看看这个函数在cplusplus里的使用说明1.strlen函数:用于计算字符串的长度,它接收一个const char *类型的参数,即指向字符数组的指针,并返回一个size_t类型的值,表示从字符串的起始位置到终止的空字符(null terminator,即’\0’)之间的字符数量。2.字符串长度与数组大小的区别:在C语言中,字符串以空字符结尾,这个空字符是字符串的一部分,但不计入strlen函数返回的长度。例如,char mystr[100]=“test string”;

Yyyyyyyyyyyyds的博客 624

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

三种方法模拟实现库函数strlen,加深对strlen的理解

三种方法模拟实现库函数strlen

这个人很懒, 什么都没留下(这是我写的) 280

模拟实现库函数strlen strcpy strcmp strcat

模拟实现库函数strlen strcpy strcmp strcat

gemgod的博客 306

【指针模拟实现库函数strlen】

指针模拟实现库函数strlen

qq_73900397的博客 264

strlen实现 模拟实现库函数strlen

strlen实现 模拟实现库函数strlen #include<stdio.h> #include<assert.h> //模拟实现库函数strlen int my_strlen(const char* str){ int count = 0; assert(str != NULL); while (*str != '\0'){ count++; str++;...

jiangkun0331的博客 385

(C语言)模拟实现库函数strlen,strcpy

(C语言)模拟实现库函数strlen,strcpy

m0_68338525的博客 516

深度认识库函数 strlen() 及其三种方式进行模拟实现

1. 库函数 strlen 的使用 2. 库函数 strlen 原理介绍 3. strlen 函数的三种模拟实现方式 1.库函数 strlen 的使用 库函数在编程中的主要用途是计算字符串长度。 如下代码: #include<stdio.h> #include<string.h>//使用 strlen 所需的头文件 int main() { char arr[] = "abcdef"; int ret = strlen(arr); printf("%d\n", r

m0_57105290的博客 839

strlen,strcpy,memmove等库函数的模拟实现(c语言)

文章目录前言strlen库函数的模拟实现strcpy库函数的模拟实现strcmp库函数的模拟实现strcat库函数的模拟实现strstr库函数的实现memcpy库函数模拟实现memmove库函数模拟实现 前言 为了更好的使用和掌握C语言中的库函数,在本文中记录一下自己模拟实现的库函数。更好的促进记忆和理解。 strlen库函数的模拟实现 strlen为字符串的计数函数遇到‘\0’停止计数 函数的返回值是无符号的 int my_strlen(const char* str) { assert(str);

weixin_53996189的博客 482

strlen库函数求字符串的长度和三种模拟实现方法

strlen库函数求字符串的长度和三种模拟实现方法

m0_61933976的博客 2018

【C语言】模拟实现strlen库函数

大家在看本文之前如果还不了解strlen函数的话 可以参考一下我写的这篇博客:【C库函数】qsort函数详解 1、给模拟函数起个名字 先给模拟实现的函数起个名吧,就叫my_strlen 然后创建一个字符型数组,把数组地址传给my_strlen,并用len变量接收my_strlen的返回值。 int main() { char str[] = "abcdef"; int len = my_srlen(str); printf("%d",len); retur.

威威的博客 1172

模拟实现库函数strlen - C语言

C语言模拟实现库函数的三种方法哦!

CtrlMind的博客 202
上一篇: 回调函数和qsort函数的使用
下一篇: 库函数strcpy的使用及模拟实现
Jett_Lin
博客等级 码龄5年 305粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值