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

C 练习实例70-求字符串长度

 题目:写一个函数,求一个字符串的长度,在 main 函数中输入字符串,并输出其长度。

 解答:

#include <stdio.h>
int length(char *s);
int main()
{int len;char str[20];printf("请输入字符串:\n");scanf("%s",str);len=length(str);printf("字符串有 %d 个字符。",len);
}
//求字符串长度  
int length(char *s)  
{  int i=0;while(*s!='\0'){  i++;   s++;  }  return i;  
}
请输入字符串:
abcd
字符串有 4 个字符。

 

字符串和字符数组

字符串的本质是字符数组,只不过它的后面有 '\0' 这个结尾标志

#include <stdio.h>
int main()
{//字符数组char a[]={'H','e','l','l','o'};	//字符串char b[]="Hello";	//“He11o”会被编译器变成一个字符数组放在某处,//这个数组的长度是6,结尾还有表示结束的0printf("%d\n",sizeof(a));	//结果为5printf("%d\n",sizeof(b));	//结果为6return 0;
}
5
6

scanf一个单词(到空格、tab或回车为止)

#include <stdio.h>
int main()
{char word[8];char word2[8];scanf("%s",word);scanf("%s",word2);printf("%s##%s##\n",word,word2);return 0;
}

输入:

Hello world!

输出: 

Hello##world!##

输入的字符串长度不能够大于等于数组长度,否者会越界,不安全 

输入:

12345678
12345678

 输出:

##12345678##

正确的安全代码:(在%和s之间加上7表是最多只能读7个字符,其余的不要了)

#include <stdio.h>
int main()
{char word[8];char word2[8];scanf("%7s",word);	//在%和s之间加上7表是最多只能读7个字符,其余的不要了scanf("%7s",word2);printf("%s##%s##\n",word,word2);return 0;
}

输入:

123
12345678

输出:

123##1234567##

strlen的用法 

strlen计算实际字符串长度,不包括结尾的0

sizeof计算实际数组长度,包括结尾的0

#include <stdio.h>
#include <string.h>
int main()
{char line[]="Hello";printf("strlen=%d\n",strlen(line));	//strlen计算实际字符串长度,不包括结尾的0printf("sizeof=%d\n",sizeof(line));	//sizeof计算实际数组长度,包括结尾的0return 0;
}
strlen=5
sizeof=6

strcmp的用法

strcmp(s1,s2)的结果为0表示相等

#include <stdio.h>
#include <string.h>
int main()
{char s1[]="abc";char s2[]="bbc";
//	strcmp(s1,s2)的结果为0表示相等。printf("%d\n",strcmp(s1,s2));return 0;
}

 

strcmp(s1,s2)的结果为-1表示s1<s2

#include <stdio.h>
#include <string.h>
int main()
{char s1[]="abc";char s2[]="dbc";
//	strcmp(s1,s2)的结果为-1表示s1<s2printf("%d\n",strcmp(s1,s2));printf("%d\n",'a'-'d');return 0;
}
-1
-3

 

strcmp(s1,s2)的结果为1表示s1>s2

#include <stdio.h>
#include <string.h>
int main()
{char s1[]="dbc";char s2[]="abc";
//	strcmp(s1,s2)的结果为1表示s1>s2printf("%d\n",strcmp(s1,s2));printf("%d\n",'d'-'a');return 0;
}
1
3

strcmp(s1,s2)是逐位比较,当比较出第一个单元相等,则开始比较下一个单元。以此类推,直到比较出最终结果

这很像我们的文件夹以名称排序的排序方式

 

#include <stdio.h>	
#include <string.h>
int main()
{char s1[]="abc";char s2[]="abe";
//	strcmp(s1,s2)是逐位比较,当比较出第一个单元相等,则开始比较下一个单元。以此类推,直到比较出最终结果printf("%d\n",strcmp(s1,s2));printf("%d\n",'c'-'e');return 0;
}
-1
-2

相关文章:

C 练习实例70-求字符串长度

题目&#xff1a;写一个函数&#xff0c;求一个字符串的长度&#xff0c;在 main 函数中输入字符串&#xff0c;并输出其长度。 解答&#xff1a; #include <stdio.h> int length(char *s); int main() {int len;char str[20];printf("请输入字符串:\n");scan…...

HarmonyOS—@State装饰器:组件内状态

State装饰的变量&#xff0c;或称为状态变量&#xff0c;一旦变量拥有了状态属性&#xff0c;就和自定义组件的渲染绑定起来。当状态改变时&#xff0c;UI会发生对应的渲染改变。 在状态变量相关装饰器中&#xff0c;State是最基础的&#xff0c;使变量拥有状态属性的装饰器&a…...

Linux系统——防火墙拓展及重点理解

目录 一、iptables 1.基本语法 2.四表五链——重点记忆 2.1四表 2.2五链 2.3总结 3.iptables选项示例 3.1 -Z 清空流量计数 3.2 -P 修改默认规则 3.3 -D 删除规则 3.4 -R 指定编号替换规则 5.白名单 6.通用匹配 7.示例 7.1添加回环网卡 7.2可以访问端口 7.3 主…...

阿里云短信验证码的两个坑

其它都参照官网即可&#xff0c;其中有两个坑需要注意&#xff1a; 1、除去官网pom引用的包之外&#xff0c;还需要引用以下包&#xff1a; <dependency><groupId>org.apache.httpcomponents.client5</groupId><artifactId>httpclient5</artifact…...

c入门第十五篇——学而时习之(阶段性总结)

古人说&#xff1a;“学而时习之。”古人又说&#xff1a;“温故而知新。”古人还说&#xff1a;“读书百遍&#xff0c;其义自见。” 总结一个道理那就是好书要反反复复的读&#xff0c;学习过的知识要时常去复习它&#xff0c;才有可能常读常新。 我&#xff1a;“师弟&…...

抽象的前端

问题背景&#xff1a;vue3&#xff0c;axios 直接导致问题&#xff1a;路由渲染失败 问题报错&#xff1a;Uncaught SyntaxError: The requested module /node_modules/.vite/deps/axios.js?v7bee3286 does not provide an export named post (at LoginIn.vue:16:9) 引入组…...

UPC训练赛二十/20240217

A:无穷力量 题目描述 2022年重庆突发山火让世界看到了中国一个又一个的感人事迹&#xff1a;战士们第一时间奔赴火场&#xff0c;志愿者们自发组成团队&#xff0c;为救火提供一切的可能的服务&#xff0c;人们自发输送物资&#xff0c;有的志愿者甚至几天几夜没有睡觉。每个…...

【51单片机】LCD1602(江科大)

1.LCD1602介绍 LCD1602(Liquid Crystal Display)液晶显示屏是一种字符型液晶显示模块,可以显示ASCII码的标准字符和其它的一些内置特殊字符,还可以有8个自定义字符 显示容量:162个字符,每个字符为5*7点阵 2.引脚及应用电路 3.内部结构框图 屏幕: 字模库:类似于数码管的数…...

conda与pip的常用命令

conda的常用命令 1.查看conda版本 $ conda --version conda 23.11.02.查看conda的配置信息 $ conda infoactive environment : baseactive env location : /home/myPc/miniconda3shell level : 1user config file : /home/myPc/.condarcpopulated config files : conda vers…...

你知道什么是物联网MQTT么?

目录 你知道什么是物联网MQTT么&#xff1f;MQTT的基本概念MQTT的工作原理MQTT的应用场景MQTT的实例案例智能家居场景工业监控场景 你知道什么是物联网MQTT么&#xff1f; MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的、基于发布/订阅模式…...

P8 pair vector

pair是一个模板类&#xff0c;用于表示一对值的组合&#xff0c;用<utility>中 pair模板有两个模板参数&#xff0c;t1 t2&#xff0c;分别表示第一个值和第二个值类型 pair类有两个成员变量&#xff0c;frist和 cond,分别表示第一个值与第二个值 还有一些成员函数和…...

奇异值分解(SVD)的应用——图像压缩

SVD方法是模型降阶的一类重要方法&#xff0c;本征正交分解&#xff08;POD&#xff09;和平衡截断&#xff08;BT&#xff09;都属于SVD类方法。 要想深入了解模型降阶技术&#xff0c;我们可以先从SVD的应用入手&#xff0c;做一个直观的了解。 1. SVD的定义和分类 我们想寻找…...

RTDETR改进系列指南

基于Ultralytics的RT-DETR改进项目.(89.9) 为了感谢各位对RTDETR项目的支持,本项目的赠品是yolov5-PAGCP通道剪枝算法.具体使用教程 自带的一些文件说明 train.py 训练模型的脚本main_profile.py 输出模型和模型每一层的参数,计算量的脚本(rtdetr-l和rtdetr-x因为thop库的问…...

类和结构体的区别

类&#xff08;class&#xff09;和结构体&#xff08;struct&#xff09;是面向对象编程&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;中常见的两种数据类型&#xff0c;它们在不同的编程语言中有一些共同之处&#xff0c;但也存在一些区别。以下是它们…...

利用Excel模拟投币试验

文章目录 试验前对Excel要进行的设置试验步骤计算正面频率结果图试验前对Excel要进行的设置 进入Excel依次点击如下选项,最后将分析工具库勾选 #mermaid-svg-bIvrxZGI9buCMW6U {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#m…...

WebService接口测试

WebService的理解 WebService就是Web服务的意思&#xff0c;对应的应用层协议为SOAP&#xff08;相当于HTTP协议&#xff09;&#xff0c;可理解为远程调用技术。 特点&#xff1a; 客户端发送的请求主体内容&#xff08;请求报文&#xff09;的格式为XML格式 接口返回的响…...

语音唤醒——

文章目录 配置主代码 参考文档&#xff1a;https://picovoice.ai/docs/quick-start/porcupine-python/ 配置 pip install pvporcupine主代码 ACCESS_KEY&#xff1a;需要将该参数填入即可 # # Copyright 2018-2023 Picovoice Inc. # # You may not use this file except in …...

typeScript 类型推论

什么是类型推论&#xff1f; 类型推论是 TypeScript 中的一个特性&#xff0c;它允许开发人员不必显式地指定变量的类型。相反&#xff0c;开发人员可以根据变量的使用情况让 TypeScript 编译器自动推断出类型。例如&#xff0c;如果开发人员将一个字符串赋值给一个变量&#…...

JavaScript 设计模式之代理模式

代理模式 其实这种模式在现在很多地方也都有使用到&#xff0c;如 Vue3 中的数据相应原理就是使用的 es6 中的 Proxy 代理及 Reflect 反射的方式来处理数据响应式 我们日常在使用数据请求时&#xff0c;也会用到一些代理的方式&#xff0c;比如在请求不同的域名&#xff0c;端…...

JavaScript 对象判断

如何判断一个对象是否是Set、Map、Array、Object 参考链接&#xff1a; https://blog.csdn.net/yunchong_zhao/article/details/115915624 let set new Set() let map new Map() let arr [] let obj {}console.log(Object.prototype.toString.call(obj)); // [object Obje…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型

在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重&#xff0c;适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解&#xff0c;并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...

CppCon 2015 学习:Reactive Stream Processing in Industrial IoT using DDS and Rx

“Reactive Stream Processing in Industrial IoT using DDS and Rx” 是指在工业物联网&#xff08;IIoT&#xff09;场景中&#xff0c;结合 DDS&#xff08;Data Distribution Service&#xff09; 和 Rx&#xff08;Reactive Extensions&#xff09; 技术&#xff0c;实现 …...

新版NANO下载烧录过程

一、序言 搭建 Jetson 系列产品烧录系统的环境需要在电脑主机上安装 Ubuntu 系统。此处使用 18.04 LTS。 二、环境搭建 1、安装库 $ sudo apt-get install qemu-user-static$ sudo apt-get install python 搭建环境的过程需要这个应用库来将某些 NVIDIA 软件组件安装到 Je…...

20250609在荣品的PRO-RK3566开发板的Android13下解决串口可以执行命令但是脚本执行命令异常的问题

20250609在荣品的PRO-RK3566开发板的Android13下解决串口可以执行命令但是脚本执行命令异常的问题 2025/6/9 20:54 缘起&#xff0c;为了跨网段推流&#xff0c;千辛万苦配置好了网络参数。 但是命令iptables -t filter -F tetherctrl_FORWARD可以在调试串口/DEBUG口正确执行。…...