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-求字符串长度
题目:写一个函数,求一个字符串的长度,在 main 函数中输入字符串,并输出其长度。 解答: #include <stdio.h> int length(char *s); int main() {int len;char str[20];printf("请输入字符串:\n");scan…...
HarmonyOS—@State装饰器:组件内状态
State装饰的变量,或称为状态变量,一旦变量拥有了状态属性,就和自定义组件的渲染绑定起来。当状态改变时,UI会发生对应的渲染改变。 在状态变量相关装饰器中,State是最基础的,使变量拥有状态属性的装饰器&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 主…...
阿里云短信验证码的两个坑
其它都参照官网即可,其中有两个坑需要注意: 1、除去官网pom引用的包之外,还需要引用以下包: <dependency><groupId>org.apache.httpcomponents.client5</groupId><artifactId>httpclient5</artifact…...
c入门第十五篇——学而时习之(阶段性总结)
古人说:“学而时习之。”古人又说:“温故而知新。”古人还说:“读书百遍,其义自见。” 总结一个道理那就是好书要反反复复的读,学习过的知识要时常去复习它,才有可能常读常新。 我:“师弟&…...
抽象的前端
问题背景:vue3,axios 直接导致问题:路由渲染失败 问题报错: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年重庆突发山火让世界看到了中国一个又一个的感人事迹:战士们第一时间奔赴火场,志愿者们自发组成团队,为救火提供一切的可能的服务,人们自发输送物资,有的志愿者甚至几天几夜没有睡觉。每个…...
【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么?MQTT的基本概念MQTT的工作原理MQTT的应用场景MQTT的实例案例智能家居场景工业监控场景 你知道什么是物联网MQTT么? MQTT(Message Queuing Telemetry Transport)是一种轻量级的、基于发布/订阅模式…...
P8 pair vector
pair是一个模板类,用于表示一对值的组合,用<utility>中 pair模板有两个模板参数,t1 t2,分别表示第一个值和第二个值类型 pair类有两个成员变量,frist和 cond,分别表示第一个值与第二个值 还有一些成员函数和…...
奇异值分解(SVD)的应用——图像压缩
SVD方法是模型降阶的一类重要方法,本征正交分解(POD)和平衡截断(BT)都属于SVD类方法。 要想深入了解模型降阶技术,我们可以先从SVD的应用入手,做一个直观的了解。 1. SVD的定义和分类 我们想寻找…...
RTDETR改进系列指南
基于Ultralytics的RT-DETR改进项目.(89.9) 为了感谢各位对RTDETR项目的支持,本项目的赠品是yolov5-PAGCP通道剪枝算法.具体使用教程 自带的一些文件说明 train.py 训练模型的脚本main_profile.py 输出模型和模型每一层的参数,计算量的脚本(rtdetr-l和rtdetr-x因为thop库的问…...
类和结构体的区别
类(class)和结构体(struct)是面向对象编程(Object-Oriented Programming,OOP)中常见的两种数据类型,它们在不同的编程语言中有一些共同之处,但也存在一些区别。以下是它们…...
利用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服务的意思,对应的应用层协议为SOAP(相当于HTTP协议),可理解为远程调用技术。 特点: 客户端发送的请求主体内容(请求报文)的格式为XML格式 接口返回的响…...
语音唤醒——
文章目录 配置主代码 参考文档:https://picovoice.ai/docs/quick-start/porcupine-python/ 配置 pip install pvporcupine主代码 ACCESS_KEY:需要将该参数填入即可 # # Copyright 2018-2023 Picovoice Inc. # # You may not use this file except in …...
typeScript 类型推论
什么是类型推论? 类型推论是 TypeScript 中的一个特性,它允许开发人员不必显式地指定变量的类型。相反,开发人员可以根据变量的使用情况让 TypeScript 编译器自动推断出类型。例如,如果开发人员将一个字符串赋值给一个变量&#…...
JavaScript 设计模式之代理模式
代理模式 其实这种模式在现在很多地方也都有使用到,如 Vue3 中的数据相应原理就是使用的 es6 中的 Proxy 代理及 Reflect 反射的方式来处理数据响应式 我们日常在使用数据请求时,也会用到一些代理的方式,比如在请求不同的域名,端…...
JavaScript 对象判断
如何判断一个对象是否是Set、Map、Array、Object 参考链接: 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…...
霜儿-汉服-造相Z-Turbo惊艳作品展:AI复原历史人物经典汉服造型
霜儿-汉服-造相Z-Turbo惊艳作品展:AI复原历史人物经典汉服造型 最近,一个名为“霜儿-汉服-造相Z-Turbo”的AI模型在圈子里悄悄火了起来。它干的事儿挺有意思:不是凭空创造新形象,而是试图“复原”那些活在文字、画作和历史记忆里…...
空洞骑士模组管理革命:Scarab如何让复杂变得简单?
空洞骑士模组管理革命:Scarab如何让复杂变得简单? 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 你是否曾经为了安装一个模组,却陷入依赖地…...
零代码玩转视觉定位:基于Qwen2.5-VL的Chord模型,5分钟从安装到实战
零代码玩转视觉定位:基于Qwen2.5-VL的Chord模型,5分钟从安装到实战 你有没有过这样的经历?翻看手机相册,想找一张“上周在咖啡馆拍的那杯拉花拿铁”,结果得一张张点开看。或者,电商运营同事每天要手动框选…...
短视频创作者必备:Qwen3本地字幕生成工具,5步快速上手
短视频创作者必备:Qwen3本地字幕生成工具,5步快速上手 1. 引言:为什么需要本地字幕生成工具 作为短视频创作者,你是否经常遇到这样的困扰:剪辑完视频后,手动添加字幕耗时费力;使用在线工具又担…...
Fish Speech 1.5保姆级教程:零代码实现Markdown文档转语音
Fish Speech 1.5保姆级教程:零代码实现Markdown文档转语音 1. 为什么选择Fish Speech 1.5? 在日常工作中,我们经常需要处理大量Markdown格式的技术文档。传统的文本转语音工具往往存在几个痛点:声音机械生硬、无法处理Markdown特…...
开源OCR工具Umi-OCR:本地化部署与高效识别实践指南
开源OCR工具Umi-OCR:本地化部署与高效识别实践指南 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件,适用于Windows系统,支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://gitcode.com/GitHub_…...
如何在Linux系统上快速配置BepInEx:Unity游戏插件框架的完整指南
如何在Linux系统上快速配置BepInEx:Unity游戏插件框架的完整指南 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx是一款专业的Unity/XNA游戏补丁和插件框架&…...
ARM架构Kylin V10上Kettle部署全攻略:从驱动配置到无界面运行
ARM架构Kylin V10上Kettle部署全攻略:从驱动配置到无界面运行 在国产化替代浪潮中,ARM架构服务器搭配麒麟操作系统已成为金融、政务等关键领域的基础设施标配。然而,当传统ETL工具Kettle遇上这套"全国产"环境,从驱动兼容…...
Fire Dynamics Simulator终极实战指南:从火灾模拟新手到专家
Fire Dynamics Simulator终极实战指南:从火灾模拟新手到专家 【免费下载链接】fds Fire Dynamics Simulator 项目地址: https://gitcode.com/gh_mirrors/fd/fds 火灾,这个看似简单却极其复杂的物理现象,曾经让无数工程师和安全专家头疼…...
实战应用:从零到一,使用快马构建资料更新内容管理系统的完整案例
实战应用:从零到一,使用快马构建资料更新内容管理系统的完整案例 最近接手了一个资料大全的版本更新管理需求,需要搭建一个简单高效的内容管理系统。经过一番摸索,我发现用InsCode(快马)平台可以快速实现这个功能,整个…...
