C语言—关于字符串(编程实现部分函数功能)
0.前言
当我们使用这些函数功能时,可以直接调用头文件---#include<string.h>,然后直接使用就行了,本文只是手动编写实现函数的部分功能
1.strlen函数功能实现
功能说明:strlen(s)用来计算字符串s的长度,该函数计数不会包括最后的'\0'
例如:strlen("abcde")就为5
#include<stdio.h>
int strlen(char s[])//strlen()函数
{int i;for (i = 0; s[i] != '\0'; i++);return i;
}
int main()
{char s[50];gets(s);printf("%d", strlen(s));return 0;
}
2.strcpy函数功能实现
功能说明:strcpy(to,from)将from这个字符串复制到to中(想成是to=from,顺序别反了)
例如:to="abc"
from="i love you"
通过函数strcpy(to,from),to就为“i love you"了
#include<stdio.h>
void strcpy(char to[],char from[])//strcpy函数
{int i;for (i = 0; from[i] != '\0'; i++)//这个循环里将from这个字符数组除了最后{ //一个元素'\0'之外的全部元素copy给了toto[i] = from[i];}to[i] = '\0';//记住最后加个'\0'作为字符串结尾
}
int main()
{char from[50],to[50];gets(from);strcpy(to, from);puts(to);return 0;
}
3.strcat函数功能实现
功能说明:strcat(s1,s2)就是将s2字符串接s1字符串后面(同样顺序别反了)
例如:s1="hello"
s2=" world"(w前有一个空格)
通过函数strcat(s1,s2),s1就为”hello world"了
#include<stdio.h>void MyStrcat(char* s1, char* s2)
{int i, j;for (i = 0; *(s1+i) != '\0'; i++);for (j = 0; *(s2+j) != '\0'; j++)//让s2中每一个字符都加进s1中,直到s2结尾为止跳出循环{*(s1+i++) = *(s2+j);}*(s1+i) = '\0';//末尾记得加'\0'作为字符串结尾
}int main()
{char s1[100], s2[50];printf("Input a string:");gets(s1);printf("Input another string:");gets(s2);MyStrcat(s1, s2);printf("Concatenate results:%s\n", s1);return 0;
}
4.字符串中删除某个字符
功能说明:就是删除s字符串中某个字符a
例如:s="hello world!"
a='o'
通过函数Delete(s,a),s就变为了"hell wrld!"
#include<stdio.h>void Delete(char* s,char a)
{int i,j;for(i=0;*(s+i)!='\0';i++){if(*(s+i)==a){for(j=0;*(s+i+j)!='\0';j++)*(s+i+j)=*(s+i+j+1);}}
}int main()
{char s[50];char a;printf("Input a string:");gets(s);printf("Input a character:");scanf("%c",&a);Delete(s,a);printf("Results:%s\n",s);return 0;
}
5.计算字符串中子串的个数
例如:s1=ahhhhabbbbab
s2=ab
通过FindString(s1,s2),计算出子串s2"ab"在字符串s1中出现了2次
#include<stdio.h>int FindString(char* s1, char* s2)
{int i,j,n=0;for (i = 0; *(s1 + i) != '\0'; i++){if (*(s1 + i) == *s2){for (j = 0; *(s2 + j) != '\0'; j++){if (*(s1 + i) != *(s2 + j)) break;i++;}if (*(s2 + j) != '\0') n++;}}return n;
}int main()
{char s1[50], s2[50];gets(s1);gets(s2);int n = FindString(s1, s2);printf("%d", n);
}
相关文章:
C语言—关于字符串(编程实现部分函数功能)
0.前言 当我们使用这些函数功能时,可以直接调用头文件---#include<string.h>,然后直接使用就行了,本文只是手动编写实现函数的部分功能 1.strlen函数功能实现 功能说明:strlen(s)用来计算字符串s的长度,该函数计数不会包括最…...
picoCTF-Web Exploitation-Trickster
Description I found a web app that can help process images: PNG images only! 这应该是个上传漏洞了,十几年没用过了,不知道思路是不是一样的,以前的思路是通过上传漏洞想办法上传一个木马,拿到webshell,今天试试看…...
SSH 免密登录,设置好仍然需要密码登录解决方法
说明: ssh秘钥登录设置好了,但是登录的时候依然需要提供密码 查看系统安全日志,定位问题 sudo cat /var/log/auth.log或者 sudo cat /var/log/secure找到下面的信息 Authentication refused: bad ownership or modes...(网上的…...
【斑马打印机】web前端页面通过BrowserPrint API连接斑马打印机进行RFID条形码贴纸打印
web前端页面通过BrowserPrint API连接斑马打印机进行RFID条形码贴纸打印 在现代物流、仓储和零售行业中,RFID和二维码技术发挥着至关重要的作用。这些技术不仅提高了效率,还增强了追踪和管理的能力。本文将介绍如何使用JavaScript和斑马打印机的BrowserPrint API来打印RFID二…...
DigitalOcean 应用托管更新:应用端到端运行时性能大幅改进
DigitalOcean 希望可以为企业提供所需的工具和基础设施,以帮助企业客户加速云端的开发,实现业务的指数级增长。为此 DigitalOcean 在 2020 年就推出了App Platform。 App Platform(应用托管) 是一个完全托管的 PaaS 解决方案&…...
c/c++对于char*的理解(联合string容器)
在C和C中,char*是一个指向字符(char)的指针。它经常被用来处理C风格的字符串,这种字符串是以空字符(\0)结尾的字符数组。以下是关于char*的一些关键点: C风格的字符串: C风格的字符…...
Web前端三大主流框架是什么?
Web前端开发领域的三大主流框架分别是Angular、React和Vue.js。它们在Web开发领域中占据着重要的地位,各自拥有独特的特点和优势。 Angular Angular是一个由Google开发的前端框架,最初版本称为AngularJS,后来升级为Angular。它是一个完整的…...
一个基于servlet的MVC项目-登录验证
一、MVC的概念 MVC是Model、View、Controller的缩写,分别代表 Web 应用程序中的3种职责1 模型:用于存储数据以及处理用户请求的业务逻辑。 2视图:向控制器提交数据,显示模型中的数据。 3控制器:根据视图提出的请求,判断将请求和数据交给哪个…...
Windows 11 下 kafka 的安装踩坑
安装 windows系统kafka小白入门篇——下载安装,环境配置,入门代码书写(推荐) kafka在windows下安装和使用入门教程 问题1 参考链接 运行kafka集成的zookeeper时,命令:bin\windows\zookeeper-server-star…...
二维数组:行列互换/求最大值及其所在位置/求各行各列的和/矩阵乘积/深入理解二维数组
二维数组 1.定义 只有行号可以省略,初始化 全部初始化/部分初始化/不初始化 2.元素引用 3.存储形式 :顺序存储 按行存储 4.深入理解二维数组 #include<stdio.h> #include<stdlib.h>#define M 2 #define N 3int mian() {int a[M][N] {{1,2,3},{4,5,6}}…...
The Onion Router-洋葱
目录 Tor的运作原理 Tor挑战和局限性 Tor,即The Onion Router(洋葱路由器),是一个用于匿名通信的开放网络,它旨在增强用户的隐私和安全。Tor的名字源自其设计原理,类似于将信息包装在多层“洋葱”中&…...
自动化工具 Ansible:playbooks 剧本编写
目录 前言 一、playbooks 剧本概述 1、playbooks 剧本概念 2、playbooks 剧本组成部分 3、playbooks 剧本特点与优势 二、ansible-playbook 命令 三、playbooks 剧本简单实例 1、编写 apache 的 yum 安装部署脚本 2、编写 nginx 的 yum 安装部署剧本 四、playbooks 定…...
AttributeError: module ‘flask.app‘ has no attribute ‘route‘
秒解方法一: # 未引入Flask app Flask(__name__)秒解方法二: AttributeError: ‘module’ object has no attribute ‘route’错误描述: 这个错误通常发生在使用 app.route 装饰器时,表示 Flask 无法找到 route 属性。 解决方法…...
在云计算与人工智能中,7ECloud扮演着什么样的角色
数据驱动的时代,云计算和人工智能已成为推动现代科技进步的两大引擎。作为一家专注于云计算的公司,7ECloud正是在这个领域发挥自己的力量,力图为企业提供一站式解决方案,并拥有来自厂家的源头支持,用极其低的价格助力企…...
视频推拉流EasyDSS视频直播点播平台如何优先展示正在直播的直播间?
视频推拉流EasyDSS视频直播点播平台集视频直播、点播、转码、管理、录像、检索、时移回看等功能于一体,可提供音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务,在应用场景上,平台可以运用在互联网教育、在线课堂、游戏…...
JavaEE之线程(4)——线程安全、线程安全的原因,synchronized关键字
前言 在本栏的前面的内容中,我们介绍了线程的创建、Thread 类及常见方法、线程的状态,今天我们来介绍一下关于线程的另一个重点知识——线程安全。 一、线程安全 基本概念: 线程安全的确切定义是复杂的,但我们可以这样认为&…...
Python3 笔记:分支结构
Python 中选择结构:单分支选择结构、双分支选择结构、多分支选择结构。 1、if 语句是单分支选择结构,其语法形式如下: if 条件表达式: 语句块 如果条件表达式的值为真,即条件成立,语句块将被执行;否…...
《TAM》论文笔记(上)
原文链接 [2005.06803] TAM: Temporal Adaptive Module for Video Recognition (arxiv.org) 原文代码 GitHub - liu-zhy/temporal-adaptive-module: TAM: Temporal Adaptive Module for Video Recognition 原文笔记 What: TAM: Temporal Adaptive Module for …...
【Java的抽象类和接口】
1. 抽象类 1.1 抽象类概念 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果 一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 以上代码中…...
今天开发了一款软件,我竟然只用敲了一个字母(文末揭晓)
软件课题:Python实现打印100内数学试题软件及开发过程 一、需求管理: 1.实现语言:Python 2.打印纸张:A4 3.铺满整张纸 4.打包成exe 先看效果: 1. 2.电脑打印预览 3.打印到A4纸效果(晚上拍的&#x…...
PHPMailer OAuth2认证终极指南:安全挑战与架构实践深度解析
PHPMailer OAuth2认证终极指南:安全挑战与架构实践深度解析 【免费下载链接】PHPMailer The classic email sending library for PHP 项目地址: https://gitcode.com/GitHub_Trending/ph/PHPMailer PHPMailer作为PHP领域最经典的邮件发送库,其OAu…...
包装器简介
可调用对象:可以使用()运算符进行调用的对象,本质是能像函数一样使用的东西常见课调用对象:函数指针,仿函数,lambda表达式我们能否使用统一的方式对其封装,进行调用,这时…...
PlatformIO环境下ESP32-S3与N16R8开发板配置全攻略
1. 为什么选择PlatformIO开发ESP32-S3? 很多刚接触ESP32-S3的开发者会纠结:到底用Arduino IDE还是PlatformIO?我刚开始用Arduino IDE,后来切换到PlatformIO就再也没回去过。PlatformIO有三大杀手锏:跨平台支持…...
单片机开发三大软件架构对比与实践
单片机开发常用软件架构深度解析1. 项目概述在嵌入式系统开发中,软件架构设计直接影响系统的可靠性、可维护性和实时性。本文系统分析三种主流单片机软件架构方案,包括时间片轮询法、操作系统方案和前后台顺序执行法,为开发者提供架构选型参考…...
基于comsol的三相电力变压器电磁场与电路耦合计算的电压电流及磁通密度分布分析
comsol三相电力变压器电磁场和电路耦合计算,可以得到变压器高低压绕组电压电流分布以及变压器磁通密度分布三相电力变压器建模这事儿,说难不难说简单也不简单。前两天用COMSOL折腾了个带电路耦合的模型,顺手把绕组电流分布和铁芯磁通都摸清楚…...
告别Widgets?用QtQuick和QML为你的桌面应用注入现代感(附完整Demo)
从Qt Widgets到QtQuick:打造现代桌面应用的实战指南 在桌面应用开发领域,Qt框架一直以其跨平台能力和稳定性著称。然而,随着用户对界面体验要求的提升,传统的Widgets方式逐渐显露出局限性——动画生硬、响应迟钝、与现代操作系统风…...
CI/CD 流水线性能优化:从构建到部署
CI/CD 流水线性能优化:从构建到部署 前言 哥们,别整那些花里胡哨的理论。今天直接上硬菜——我在大厂一线优化 CI/CD 流水线性能的真实经验总结。作为一个白天写前端、晚上打鼓的硬核工程师,我对效率的追求就像对鼓点节奏的把控一样严格。 背…...
从零到一:基于LLaMA-Factory的微调实战与核心参数精讲
1. 环境准备与LLaMA-Factory初探 第一次接触LLaMA-Factory时,我对着官方文档发呆了半小时——这个工具链实在太强大了,但新手很容易被各种依赖项劝退。这里分享我的踩坑经验:不要一上来就追求最新版本。去年12月我在RTX 3090上折腾v0.4.0时&a…...
Gerrit SSH Key配置避坑指南:为什么Permission denied还在报错?
Gerrit SSH Key配置避坑指南:为什么Permission denied还在报错? 当你按照标准流程配置了SSH Key,却在克隆Gerrit仓库时遭遇Permission denied (publickey)错误,这种挫败感就像精心准备的钥匙打不开已知密码的锁。本文将带你深入排…...
asp毕业设计下载(全套源码+配套论文)——基于asp+access的仓储物流管理系统设计与实现
基于aspaccess的仓储物流管理系统设计与实现(毕业论文程序源码) 大家好,今天给大家介绍基于aspaccess的仓储物流管理系统设计与实现,更多精选毕业设计项目实例见文末哦。 文章目录: 基于aspaccess的仓储物流管理系统…...
