求字符串长度的三种方法(C语言)

2023-11-19

如何求字符串的长度?

首先要明白字符串存储的原理。

字符串存储时,是以'\0'结尾,这个就可以作为判断字符串结尾的一个条件。

接下来,只要有字符串的首元素地址,就可以解决求字符串长度的问题啦!

第一种,普通版

int my_strlen(char* str)
{
    int count = 0;
    while(*str != '\0')
    {
        count++;
        str++;
    }
    return count;
}
int main()
{
    char arr[] = "abcdef";
	int len = my_strlen(arr);
	printf("字符串的长度为%d\n", len);
    return 0;
}

第二种,递归版

int my_strlen(char* str)
{
	if (*str == '\0')
		return 0;
	else
		return 1 + my_strlen(str + 1);
}

第三种,指针版

通过指针运算,利用指针-指针可以求得字符串的长度。

int my_strlen(char* str)
{
	char* start = str;
	while (*str != '\0')
	{
		str++;
	}
	return str - start;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

求字符串长度的三种方法(C语言) 的相关文章

  • c++03 初始化具有多个参数的对象数组

    这可能是一个简单的问题 但我正在尝试使用参数化构造函数初始化对象数组 例如 class A public int b c d A int i int j void A A int i int j d rand b 2 i c 3 j voi
  • 添加新包会破坏 .NET 5 应用程序

    我一直试图找出为什么我的控制台应用程序在引入新包后立即失败 使用IdentityModel OidcClient and Microsoft AspNetCore Server Kestrel only有效 但是添加时Microsoft E
  • 以编程方式最大化屏幕一半的窗口

    我想最大化屏幕左侧的随机窗口 我可以在我的代码中使用 Windows Aero 函数吗 这个窗口can像用鼠标一样最大化 我只想以编程方式做到这一点 I use C 我可以得到IntPtr窗户的 如果可能的话 不要伪造鼠标或键盘输入 这可以
  • Attachconsole的问题

    我需要使 Windows GUI 应用程序可以在控制台中运行 因此当使用命令行调用应用程序时 我将控制台附加到进程 但是 应用程序退出后 除非按 ENTER 键 否则不会显示带有路径的控制台提示符 有什么办法可以不按回车键直接显示路径提示吗
  • 如何在命名管道 (mkfifo) 上执行非阻塞 fopen?

    如果我有一个程序使用 mkfifo 创建并尝试打开命名管道 如何在不阻塞的情况下打开管道进行读取或写入 具体来说 我正在编写一个 C 程序 它可以在有或没有 GUI 的情况下运行 用 Java 编写 在 C 程序中 我使用 mkfifo 成
  • 如何使用 Windows 粘贴命令将文本粘贴到 C# 中的其他应用程序?

    如何调用互操作来使用 Windows Pastse 命令将文本粘贴到 C 中的其他应用程序 调用互操作 我的意思是如何对 C 进行编程相同的右键单击粘贴文本 在某些情况下这可能有点棘手 但实际上非常简单且容易做到 下面的示例介绍了如何使用文
  • 在实体框架中附加集合

    使用实体框架 我可以使用附加单个对象 entity Attach 但是 我没有看到任何方法允许我将多个对象的集合 数组添加到实体 我必须循环遍历集合中的每个项目并调用entity Attach 每一次 是的 您必须循环遍历子集合并Attac
  • XML 字符串到 XML 文档

    我有一个完整的 XML 文档String我需要将其转换为 XML 文档并解析文档中的标签 此代码示例取自csharp examples net http www csharp examples net xml nodes by name 写
  • 正则表达式,获取两个关键字之间的整个字符串

    我正在做一些输出解析 我需要从两个单词之间抓取一大块文本 例如 如果我正在解析文本 Hi this is an example 我希望能够指定我的两个单词是 Hi 和 example 然后我将取回字符串 this is an 我知道正则表达
  • 在 C 中从数组创建子数组的最佳方法

    我有一个数组说a 3 1 2 5 我必须创建另一个数组a2 2 2 5 我尝试过的是创建一个新数组a2 只需复制所需位置范围内的所有元素即可 在C语言中还有其他方法可以实现这一点吗 memcpy a2 a 1 2 sizeof a
  • std::ostream 需要功能帮助

    我需要有人逐步向我解释这些代码行 并且我需要一些帮助来使用 ostream 和简单的示例 谢谢 inline std ostream operator lt lt std ostream os const Telegram t os lt
  • libcurl HTTP HEAD 请求没有自动代理连接标头

    我需要关于使用 libcurl 进行以下操作的说明 我需要发送如下所示的 http HEAD 请求 HEAD mshare 3 30002 12 primary stream xNKNVH mpeg HTTP 1 1 Host 192 16
  • C#:模拟内存泄漏

    我想用c 编写以下代码 a 模拟内存泄漏的小型控制台应用程序 b 小型控制台应用程序 它将调用上述应用程序并立即释放它 模拟管理内存泄漏问题 换句话说 应用程序 b 将不断调用并释放应用程序 a 以模拟如何遏制 叛逆 内存泄漏应用程序 而不
  • 树视图上的 VirtualizingStackPanel 不是虚拟化

    我在这里遇到一个问题 我想在 TreeView 中显示一些项目 大约 100 000 个元素 如果我使用默认的 WPF TreeView 一切似乎都可以工作 但如果我使用自定义 TreeView 目前只有 ItemsControl 虚拟化似
  • 推导具有两个以上参数的 std::function

    我想知道为什么std function http en cppreference com w cpp utility functional function只知道有两个参数的函数 我已经编写了一些运行良好的代码 但存在许多限制 欢迎任何反馈
  • 提升精神带走关键字并忽略船长

    这是使用表达式的语法的一小部分 prefix lit L not gt gt prefix lit gt gt prefix postfix 我在 postfix 内部有某种方式纯名称获取标识符 name pure lexeme boost
  • BigInteger 乘以 Double

    我的物理老师给全班布置了一项艰巨的任务 我正在尝试创建一个程序来为我计算一些事情 在某个时刻 我需要将分子数量乘以百分比 Ulong 不能容纳大到 6022 10 19 的数字 所以我必须使用 net 4 0 中的 BigInteger 但
  • 如何从函数调用事件处理程序?

    我有一个类 我从中调用一个函数ABC string st 带字符串参数 该函数定义在一个Form class Form1 我有一个列表视图 想要从函数中自动调用列表视图 mouse click 事件 我该如何做到这一点 您不能调用另一个类的
  • WCF maxBytesPerRead 限制为 4096

    我在流模式下使用基本的 WCF Web 服务从服务器下载文件 我已将服务器端的绑定指定为
  • EF,Code First - 如何在插入时设置自定义 Guid 标识值

    在处理在数据库中插入新实体时 我面临以下问题Guid作为主键 代码优先的 EF 5方法 我知道有很多类似的主题 因为我为此问题运行了几个小时 但我找不到与此问题相关的主题 举个例子 我的 POCO 类是 public class Entit

随机推荐

  • element-table新增 以input框形式输入

    工作遇到的问题记录下 代码如下 选了其中一行做例子
  • 好用的在线画图工具processon

    ProcessOn是一款基于SaaS的前沿 高效线上作图工具 它将Visio Xmind等专业作图工具搬到了 云端 注册链接 https www processon com i 564bf42ce4b0a080c6d1b18f 保存 分享都
  • go字符串详解

    文章目录 摘要 1 byte和rune类型 2 字符串 string 3 练习 反转字符串 摘要 go字符串结构体包含 指向底层存储数组的指针 字符串长度 字符串按utf 8将字符编码成二进制数 然后存储在byte数组中 因为utf 8编码
  • gin jwt-go 生成token及jwt中间件验证

    一 定义jwt中间件 同时将 生成token 验证token token中间件handlerfunc都写在中间件文件中 基于 github com dgrijalva jwt go 包 gin框架 obj middleware jwt go
  • 回声消除(AEC)原理、算法及实战——AEC背景介绍

    回声就是声音信号经过一系列反射之后 又听到了自己讲话的声音 这就是回声 一些回声是必要的 比如剧院里的音乐回声以及延迟时间较短的房间回声 而大多数回声会造成负面影响 比如在有线或者无线通信时重复听到自己讲话的声音 回想那些年我们开黑打游戏时
  • EL表达式向select中赋值

    在使用el表达式的时候 有时需要向select下拉菜单中赋值 可以使用三目运算法进行赋值
  • 3. ClickHouse数据类型和表结构

    3 1 数据类型 整数类型 整数类型有Int8 Int16 Int32 Int64 分别表示8位 16位 32位和64位有符号整数 适用场景 存储整数值 如年龄 数量等 浮点类型 浮点类型有Float32和Float64 分别表示32位和6
  • Jenkins自动化部署项目

    Jenkins史上最详细的使用教程 jenkins官网 jenkins简单部署Vue项目 jenkins部署springboot项目 jenkins详细部署说明 后续小编会写上自己的使用心得 jenkins官网 https www jenk
  • 计算机用于更新无法卸载补丁,出现windows 系统补丁无法卸载该怎么解决?简单几步即可解决...

    电脑已经成为我们日常生活中的必备品 长期使用电脑肯定会碰到win10系统kb4034674无法卸载提示 没有成功卸载全部更新的问题 很多用户之前从未遇到win10系统kb4034674无法卸载提示 没有成功卸载全部更新这样的问题 其实win
  • 【前端基础知识复习】

    js基础知识复习 原型链 继承 原型链继承 经典继承 借用构造函数 组合继承 1和2结合 常用 原型式继承 ES5 Object create 寄生式继承 寄生组合继承 最理想 作用域与作用域链 闭包 立即执行函数 typeof和insta
  • 服务器内核有未知文件,【原创文章】CENTOS kernel panic无法对未知的块安装根文件系统的解决办法...

    今天突然发现维护的linux系统无法访问了 网站打不开 SSH无法登陆 后台面板也没有响应 打开机房的管理后台 reboot服务器 过了一会还是没有反应 有点纳闷 这是商业网站 不敢怠慢 马上开工找问题 打开机房准备的KVM KVM是基于j
  • 一、super slomo介绍

    本专题文章对super slomo进行一系列操作 降低训练时间 预测时间 导出训练模型 C 调用模型进行预测等 本章对其进行一个简单介绍 来自互联网 2018年CVPR的论文 Super SloMo High Quality Estimat
  • 阿里平头哥CPU技术生态负责人陈炜:平头哥的发展之路

    整理 巫柔颖 RISC V是近年兴起的一种CPU新架构 因其开放 灵活的特性而逐渐成为半导体行业的热门选择 当前 已有近2500家机构加入RISC V基金会 包括阿里 华为 Google 英特尔 IBM等公司 在阿里宣布平头哥开源玄铁RIS
  • windows sql server 如何卸载干净?

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 windows sql server 怎么卸载干净 前言 一 windows sql server是什么 二 如何卸载干净 1 关闭sql server服务 2 到控制面板
  • hive 表创建及字段信息管理

    1 分区表创建及数据导入 1 1 创建分区表 以日期pt分区 字段用 t分隔 输入格式为txt 存储格式为orc use db name drop table if exists tablename CREATE TABLE IF NOT
  • Windows10 adb安装与环境变量配置

    adb安装与环境变量配置 目录 adb安装与环境变量配置 安装adb工具都需要什么 Android SDK 的下载 如何配置变量环境 adb启动不了是什么原因 安装adb工具都需要什么 1 需要下载Android SDK 配置环境变量即可
  • 797. 所有可能的路径

    class Solution public vector
  • 用STM32F407ZET6的HAL库写一个串口接收,发送代码,支持ringbuff

    你可以参考这个示例代码 https www st com content ccc resource technical document application note group0 b5 d4 04 c1 b4 4f 4d e5 DM0
  • 准确率与召回率

    1 准确率与召回率 Precision Recall 准确率和召回率是广泛用于信息检索和统计学分类领域的两个度量值 用来评价结果的质量 其中精度是检索出相关文档数与检索出的文档总数的比率 衡量的是检索系统的查准率 召回率是指检索出的相关文档
  • 求字符串长度的三种方法(C语言)

    如何求字符串的长度 首先要明白字符串存储的原理 字符串存储时 是以 0 结尾 这个就可以作为判断字符串结尾的一个条件 接下来 只要有字符串的首元素地址 就可以解决求字符串长度的问题啦 第一种 普通版 int my strlen char s