当前位置: 首页 > news >正文

金丹二层 —— 字符串长度求解的四种方法

前言:

1.CSDN由于我的排版不怎么好看,我的有道云笔记比较美观,请移步有道云笔记

2.修炼必备

        1)入门必备:VS2019社区版,下载地址:Visual Studio 较旧的下载 - 2019、2017、2015 和以前的版本 (microsoft.com)

        2)趁手武器:印象笔记/有道云笔记

        3)修炼秘籍:牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网 (nowcoder.com)

        4)雷劫必备:leetcode 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 

        注:遇到瓶颈怎么办?百度百科_全球领先的中文百科全书 (baidu.com)

字符串的求解

1.问题描述

给定一个字符串(长度在0-1000),求出该字符串的长度,注:输入字符串的各字符之间不存在空格

2. 代码解释

        法一:使用库函数strlen()求解【需包含头文件string.h】

注:strlen()函数是用于求字符串长度的,是得到'\0'字符之前的所有字符数

#include <stdio.h>
#include <string.h>int main()
{char str[1000] = "";while(scanf("%s", str)!=EOF)printf("%d\n", strlen(str));return 0;
}

EOF是一个宏,它本质是-1,当scanf()函数返回EOF的时候,就说明scanf()没有任何输入。

EOF的宏定义如下:

        #define EOF -1

        法二: 计数器 

思路分析:使用一个计数器变量计算字符串'\0'之前的字符总数

#include <stdio.h>
#include <assert.h>int getCharTotal(const char* str)
{assert(str);//判断空指针int count = 0;//统计'\0'之前的字符数while (*str != '\0'){count++;//计数str++;//指向下一个字符}return count;
}int main()
{char str[100] = "";while (scanf("%s", str) != EOF){int total = getCharTotal(str);printf("%d\n", total);}return 0;
}

        法三:指针-指针

思路分析:引入一个字符指针,让该字符指针指向字符串的首地址,使该指针遍历到'\0'的地址后,让指针指向的地址减去字符串起始地址,即得到'\0'之前的字符总数

#include <stdio.h>
#include <assert.h>int getCharTotal(const char* str)
{assert(str);//判断空指针const char* cur = str;//遍历指针//使遍历指针遍历到'\0'的位置while (*cur != '\0'){cur++;}//指针-指针得到的是字符个数return cur - str;
}int main()
{char str[100] = "";while (scanf("%s", str) != EOF){int total = getCharTotal(str);printf("%d\n", total);}return 0;
}

         法四:递归

思路分析:字符没有遇到'\0'的时候进行递归,进行递归的时候,需要得到当前字符指向它的下一个字符的地址,且字符串长度+1,遇到'\0'之后,返回字符串的长度

#include <stdio.h>
#include <assert.h>int getCharTotal(const char* str)
{assert(str);//判断空指针if (*str == '\0')return 0;return 1 + getCharTotal(str + 1);
}int main()
{char str[100] = "";while (scanf("%s", str) != EOF){int total = getCharTotal(str);printf("%d\n", total);}return 0;
}

相关文章:

金丹二层 —— 字符串长度求解的四种方法

前言&#xff1a; 1.CSDN由于我的排版不怎么好看&#xff0c;我的有道云笔记比较美观&#xff0c;请移步有道云笔记 2.修炼必备 1&#xff09;入门必备&#xff1a;VS2019社区版&#xff0c;下载地址&#xff1a;Visual Studio 较旧的下载 - 2019、2017、2015 和以前的版本 (m…...

深入剖析Linux——进程信号

致前行的人&#xff1a; 要努力&#xff0c;但不着急&#xff0c;繁花锦簇&#xff0c;硕果累累都需要过程&#xff01; 目录 1.信号概念 1.1生活角度的信号 2. 技术应用角度的信号 3.Linux操作系统中查看信号 4.常用信号发送 4.1通过键盘发送信号 4.2调用系统函数发送信号 4.3…...

API-Server的监听器Controller的List分页失效

前言 最近做项目&#xff0c;还是K8S的插件监听器&#xff08;理论上插件都是通过API-server通信&#xff09;&#xff0c;官方的不同写法居然都能出现争议&#xff0c;争议点就是对API-Server的请求的耗时&#xff0c;说是会影响API-Server。实际上通过源码分析两着有差别&am…...

jupyter notebook 进阶使用:nbextensions,终极避坑

jupyter notebook 进阶使用&#xff1a;nbextensions&#xff0c;终极避坑吐槽安装 jupyter_contrib_nbextensions1. Install the python package&#xff08;安装python包&#xff09;方法一&#xff0c;PIP&#xff1a;方法二&#xff0c;Conda&#xff08;推荐&#xff09;&…...

C 语言编程 — Doxygen + Graphviz 静态项目分析

目录 文章目录目录安装配置解析Project related configuration optionsBuild related configuration optionsConfiguration options related to warning and progress messagesConfiguration options related to the input filesConfiguration options related to source brows…...

Mybatis报BindingException:Invalid bound statement (not found)异常

一、前言 本文的mybatis是与springboot整合时出现的异常&#xff0c;若使用的不是基于springboot&#xff0c;解决思路也大体一样的。 二、从整合mybatis的三个步骤排查问题 但在这之前&#xff0c;我们先要知道整合mybatis的三个重要的工作&#xff0c;如此才能排查&#x…...

HttpRunner3.x(1)-框架介绍

HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架&#xff0c;只需编写维护一份 YAML/JSON 脚本&#xff0c;即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。主要特征继承的所有强大功能requests &#xff0c;只需以人工方式获得乐趣即可处理HTTP&#xf…...

pytest学习和使用20-pytes如何进行分布式测试?(pytest-xdist)

20-pytes如何进行分布式测试&#xff1f;&#xff08;pytest-xdist&#xff09;1 什么是分布式测试&#xff1f;2 为什么要进行分布式测试&#xff1f;2.1 场景1&#xff1a;自动化测试场景2.2 场景2&#xff1a;性能测试场景3 分布式测试有什么特点&#xff1f;4 分布式测试关…...

三、Python 操作 MongoDB ----非 ODM

文章目录一、连接器的安装和配置二、新增文档三、查询文档四、更新文档五、删除文档一、连接器的安装和配置 pymongo&#xff1a; MongoDB 官方提供的 Python 工具包。官方文档&#xff1a; https://pymongo.readthedocs.io/en/stable/ pip安装&#xff0c;命令如下&#xff1…...

求最大公约数和最小公倍数---辗转相除法(欧几里得算法)

目录 一.GCD和LCM 1.最大公约数 2.最小公倍数 二.暴力求解 1.最大公约数 2.最小公倍数 三.辗转相除法 1.最大公约数 2.最小公倍数 一.GCD和LCM 1.最大公约数 最大公约数&#xff08;Greatest Common Divisor&#xff0c;简称GCD&#xff09;指的是两个或多个整数共有…...

音视频开发_获取媒体文件的详细信息

一、前言 做音视频开发过程中,经常需要获取媒体文件的详细信息。 比如:获取视频文件的总时间、帧率、尺寸、码率等等信息。 获取音频文件的的总时间、帧率、码率,声道等信息。 这篇文章贴出2个我封装好的函数,直接调用就能获取媒体信息返回,copy过去就能使用,非常方便。…...

Springboot集成Swagger

一、Swagger简介注意点&#xff01; 在正式发布的时候要关闭swagger&#xff08;出于安全考虑&#xff0c;而且节省内存空间&#xff09;之前开发的时候&#xff0c;前端只用管理静态页面&#xff0c; http请求到后端&#xff0c; 模板引擎JSP&#xff0c;故后端是主力如今是前…...

Vue全新一代状态管理库 Pinia【一篇通】

文章目录前言1. Pinia 是什么&#xff1f;1.1 为什么取名叫 Pinia?1.2. 为什么要使用 Pinia ?2. 安装 Pinia2.1.创建 Store2.1.1. Option 类型 Store2.1.2 Setup 函数类型 Store2.1.3 模板中使用3. State 的使用事项&#xff08;Option Store &#xff09;3.1 读取 State3.2 …...

STM32 -4 关于STM32的RAM、ROM

一 stm32 的flash是什么、有什么用、注意事项、如何查看 一 、说明 它主要用于存储代码&#xff0c;FLASH 存储器的内容在掉电后不会丢失&#xff0c;STM32 芯片在运行的时候&#xff0c;也能对自身的内部 FLASH 进行读写&#xff0c;因此&#xff0c;若内部 FLASH 存储了应用…...

第一个 Qt 程序

第一个 Qt 程序 “hello world ”的起源要追溯到 1972 年&#xff0c;贝尔实验室著名研究员 Brian Kernighan 在撰写 “B 语言教程与指导(Tutorial Introduction to the Language B)”时初次使用&#xff08;程序&#xff09;&#xff0c;这是目前已 知最早的在计算机著作中将…...

Spring注解驱动开发--AOP底层原理

Spring注解驱动开发–AOP底层原理 21. AOP-AOP功能测试 AOP&#xff1a;【动态代理】 指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式&#xff1b; 1、导入aop模块&#xff1a;Spring AOP&#xff0c;(Spring-aspects) 2、定义一个业务逻辑类(Ma…...

对象的动态创建和销毁以及对象的复制,赋值

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章,「初学」C​​​​​​​ &#x1f525;座右铭&#xff1a;“不要等到什么都没有了&#xff0c;才…...

JVM调优,调的是什么?目的是什么?

文章目录前言一、jvm是如何运行代码的&#xff1f;二、jvm的内存模型1 整体内存模型结构图2 堆中的年代区域划分3 对象在内存模型中是如何流转的?4 什么是FULL GC,STW? 为什么会发生FULL GC?5 要调优,首先要知道有哪些垃圾收集器及哪些算法6 调优不是盲目的,要有依据,几款内…...

docker部署zabbix监控

docker部署zabbix监控 1、环境说明 公有云ubuntu22.04 系统->部署docker环境zabbix-server 6.4 2、准备docker环境 更新apt以及安装一些必要的系统工具 sudo apt-get update sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-co…...

C语言刷题(6)(猜名次)——“C”

各位CSDN的uu们你们好呀&#xff0c;今天&#xff0c;小雅兰还是在复习噢&#xff0c;今天来给大家介绍一个有意思的题目 题目名称&#xff1a; 猜名次 题目内容&#xff1a; 5位运动员参加了10米台跳水比赛&#xff0c;有人让他们预测比赛结果&#xff1a; A选…...

3分钟快速上手:DouYinBot抖音无水印视频下载终极指南 [特殊字符]

3分钟快速上手&#xff1a;DouYinBot抖音无水印视频下载终极指南 &#x1f680; 【免费下载链接】DouYinBot 抖音无水印下载 项目地址: https://gitcode.com/gh_mirrors/do/DouYinBot 在短视频内容创作和分享的时代&#xff0c;如何快速获取无水印的抖音视频成为创作者和…...

故障诊断指南:用STFT在5分钟内定位工业设备异常时间点(MATLAB版)

故障诊断实战&#xff1a;STFT在工业设备异常定位中的高效应用&#xff08;MATLAB实现&#xff09; 工业设备的异常检测如同医生听诊&#xff0c;需要精准捕捉故障的"心跳节律"。传统方法往往只能告诉我们"设备病了"&#xff0c;却难以定位"何时发病…...

TensorRT性能调优实战指南:从瓶颈诊断到引擎优化

TensorRT性能调优实战指南&#xff1a;从瓶颈诊断到引擎优化 【免费下载链接】TensorRT NVIDIA TensorRT™ 是一个用于在 NVIDIA GPU 上进行高性能深度学习推理的软件开发工具包&#xff08;SDK&#xff09;。此代码库包含了 TensorRT 的开源组件 项目地址: https://gitcode.…...

企业IT必看:教员工用小米手机配置Exchange邮箱的完整指南(含服务器参数详解)

企业IT标准化指南&#xff1a;小米手机Exchange邮箱配置与服务器参数解析 在移动办公成为标配的今天&#xff0c;企业邮箱的稳定接入直接关系到团队协作效率。根据2023年企业通信工具调研报告&#xff0c;超过67%的中大型企业仍在使用Exchange作为核心邮件系统&#xff0c;而员…...

LeaguePrank:5分钟学会英雄联盟个性化美化工具终极指南 [特殊字符]

LeaguePrank&#xff1a;5分钟学会英雄联盟个性化美化工具终极指南 &#x1f3ae; 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank 想要在英雄联盟中展示与众不同的个人形象吗&#xff1f;LeaguePrank 正是你需要的个性化美化工…...

OpenClaw+nanobot镜像:3步配置QQ聊天机器人触发AI任务

OpenClawnanobot镜像&#xff1a;3步配置QQ聊天机器人触发AI任务 1. 为什么选择OpenClawnanobot组合&#xff1f; 去年冬天&#xff0c;当我第一次尝试用QQ机器人自动处理群消息时&#xff0c;经历了漫长的环境配置地狱。直到发现星图平台的nanobot镜像&#xff0c;这个开箱即…...

实测AWS Bedrock 接入 Claude 4.6 做代码审查:200K 上下文+多智能体协作

最近 GitHub 上的不少热门开源项目都在热议一款新工具&#xff1a;Anthropic 刚刚在 AWS Bedrock 推出的 Claude 4.6 Sonnet&#xff0c;以及随之而来的多智能体代码审查系统&#xff08;Claude Code Review&#xff09;。这套系统不仅卷起了技术圈的讨论热潮&#xff0c;也掀起…...

Qwen3.5-4B-Claude-GGUF效果展示:同一问题在不同Temperature下的推理差异

Qwen3.5-4B-Claude-GGUF效果展示&#xff1a;同一问题在不同Temperature下的推理差异 1. 模型介绍 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF是一个基于Qwen3.5-4B的推理蒸馏模型&#xff0c;特别强化了结构化分析、分步骤回答、代码与逻辑类问题的处理能力。这个…...

为什么头部金融科技公司已在2026 Q1全面切换Python AOT?——基于百万行代码仓库的构建耗时、镜像体积、安全扫描通过率真实数据复盘

第一章&#xff1a;Python 原生 AOT 编译方案 2026 对比评测报告Python 社区在 2025 年底迎来关键演进&#xff1a;CPython 官方正式将原生 AOT&#xff08;Ahead-of-Time&#xff09;编译能力纳入 3.14 开发主线&#xff0c;并以“Project Graviton”为代号推动落地。2026 年初…...

Ubuntu 20.04安装MATLAB R2023B保姆级避坑指南:从卸载旧版到选对产品,一步一截图

Ubuntu 20.04安装MATLAB R2023B全流程实战&#xff1a;从彻底卸载到精准选配 在科研与工程计算领域&#xff0c;MATLAB始终保持着不可替代的地位。当最新版的R2023B遇上Ubuntu 20.04这个长期支持版本&#xff0c;如何实现完美部署却让不少用户望而却步。不同于Windows下的图形化…...