c++课后作业
把字符串转换为整数
int main()
{char pn[21];cout << "请输入一个由数字组成的字符串: ";cin >> pn;int last = 0;int res[10];int j = strlen(pn);int idx = 2;cout << "请选择(2-二进制,10-十进制): ";cin >> idx;for (int i = 0,len = strlen(pn);i < len; i++){if (pn[i] < '0' || pn[i] > '9') { cout << "非法字符!!!"; break; }last += (pn[i] - '0') * pow(idx,j-1);j = j - 1 ;}cout << last;
}
重写strcat和strncat
char* mystrcat(char* dest, const char* src)
{memcpy(dest + strlen(dest), src, strlen(src) + 1);return dest;
}char* mystrncat(char* dest, const char* src, const size_t n)
{size_t len = strlen(dest);memcpy(dest + len, src, n);*(dest + len + n) = 0;return dest;}
重写strchr和strrchr
注意⚠️:这里不能从后往前找,因为想从后往前找就只能使用strlen,而strlen本质就是遍历一遍字符串,这样就更慢了。
const char* mystrchr(const char* s, int c)
{char* p = (char*)s;while (*p){if (*p == c) return p;p++;}return 0;
}const char* mystrrchr(const char* s, int c) //查找字符
{char* p = (char*)s;char* p1 = 0;while (*p){if (*p == c){p1 = p;}p++;}return p1;}
重写strcmp和strncmp
int mystrcmp(const char* str1, const char* str2)
{char* p1 = (char*)str1;char* p2 = (char*)str2;while (*p1 && *p2){if (*p1 != *p2){if (*(p1) > *(p2)) return -1;else return 1;}p1++;p2++;}return 0;
}int mystrncmp(const char* str1, const char* str2, size_t n)
{char* p1 = (char*)str1;char* p2 = (char*)str2;for (int i = 0; i < n; i++){if (*p1 != *p2){if (*(p1) > *(p2)) return -1;else return 1;}p1++;p2++;}return 0;}
重写strstr
char* caijimystrstr(const char* haystack, const char* needle)
{char* p1 = (char*)haystack;char* p2 = (char*)needle;char* tmp1;char* tmp2 = p2;while (*p1){while (*p1 == *p2){tmp1 = p1;for (int i = 0; i < strlen(needle); i++){if (*p1 != *p2){continue;}p1++;p2++;if (*p2 == 0){return p1-strlen(needle);}}continue;}p2 = tmp2;p1++;}return nullptr;}const char* dalaomystrstr(const char* haystack, const char* needle)
{size_t ii = 0, jj = 0; size_t len = strlen(haystack), slen = strlen(needle);while ((ii < len) && (jj < slen)){if (haystack[ii] == needle[jj]){ii++, jj++;}else{ii = ii - jj;jj = 0;ii++;}}if (jj == slen) return (haystack+(ii-jj));return 0;
}
解析XML
bool xmlbuffer(const char* xmlbuf, const char* fieldname, char* value = 0, const size_t ilen = 0)
{if (xmlbuf == 0 || fieldname == 0) return false;//创建字段int lenfieldname = strlen(fieldname);//开辟空间char* sfieldname = new char[lenfieldname + 3];char* efieldname = new char[lenfieldname + 4];//初始化memset(sfieldname, 0, lenfieldname +3); // 错误代码 memset(sfieldname, 0, sfieldname); 原因:new出来的空间不能用memsetmemset(efieldname, 0, lenfieldname +4);//创建字段strcpy(sfieldname, "<"); strcat(sfieldname, fieldname); strcat(sfieldname,">");strcpy(efieldname, "</"); strcat(efieldname, fieldname); strcat(efieldname, ">");//找字段;char* start;char* end;start = (char*)strstr(xmlbuf, sfieldname);end = (char*)strstr(xmlbuf, efieldname);//没找到if (start == 0 || end == 0){delete[] sfieldname;delete[] efieldname;return 0;}size_t vallen = (end - start - lenfieldname - 2); //指针减去指针等于数值,表示的是从 start 到 end 的距离减去了 lenfieldname(<fieldname> 的长度)和 2(< 和 > 的长度)。if (ilen == 0){strncpy(value, start + lenfieldname + 2, vallen);value[vallen] = 0;}else if (vallen <= ilen){strncpy(value, start + lenfieldname + 2, vallen);value[vallen] = 0;}else{strncpy(value, start + lenfieldname + 2, ilen);value[ilen] = 0;}delete[] sfieldname;delete[] efieldname;return 1;}
不重复的随机数
void rrand(int arr[], const size_t len, const int minvalue = 0)
{srand(time(0));for (int i = 0; i < len; i++){while (1){int tmp = rand() % len + minvalue;int j = 0;for (j = 0; j < i; j++){if (tmp == arr[j]) break;}if (j == i){arr[i] = tmp;break;}}}
}
重写strcpy和strncpy
char* my2strcpy(char* dest, const char* src)
{int i = 0;while (src[i]){dest[i] = src[i];i++;}dest[i] = 0;return dest;
}char* my2strncpy(char* dest, const char* src , const size_t n )
{if (n < 0) return 0;size_t lens = strlen(src);if (n > lens){my2strcpy(dest, src);}int i = 0;for (i = 0; i < n; i++){dest[i] = src[i];}dest[i++] = 0;return dest;}
相关文章:
c++课后作业
把字符串转换为整数 int main() {char pn[21];cout << "请输入一个由数字组成的字符串: ";cin >> pn;int last 0;int res[10];int j strlen(pn);int idx 2;cout << "请选择(2-二进制,10-十进制…...
SpringBoot+Vue实现简单的文件上传(txt篇)
SpringBootVue实现简单的文件上传 1 环境 SpringBoot 3.2.1,Vue 2,ElementUI 2 页面 3 效果:只能上传txt文件且大小限制为2M,选择文件后自动上传。 4 前端代码 <template><div class"container"><el-…...
LLMs之RAG:GraphRAG(本质是名词Knowledge Graph/Microsoft微软发布)的简介、安装和使用方法、案例应用之详细攻略
LLMs之RAG:GraphRAG(本质是名词Knowledge Graph/Microsoft微软发布)的简介、安装和使用方法、案例应用之详细攻略 导读:2024年7月3日,微软正式开源发布GraphRAG。GraphRAG可以提高大型语言模型在私有数据集上的推理能力。 背景痛点࿱…...
Linux 之前的 Unix 桌面沉浮启示录
It takes more than open source, it takes open standards and consensus 仅仅开源还不足以实现开放,还需开放标准和建立共识 Steven J. Vaughan-Nichols Sat 27 Jan 2024 // 12:33 UTC 现在,由于有了安卓和 ChromeOS,Linux 已成为重要的终端…...
面试问题梳理:项目中防止配置中的密码泄露-Jasypt
背景 想起面试的时候,面试官问我现在大家用Spring框架,数据库、ES之类的密码都是配置在配置文件中的,有很大的安全隐患,你有考虑过怎么解决嘛? 当时我回答是可以在项目启动的过程中的命令行追加的方式,感觉…...
engine.addImportPath()用于向 QML 引擎添加新的模块搜索路径
engine.addImportPath() 是 QQmlApplicationEngine 类中的一个方法,用于向 QML 引擎添加新的模块搜索路径。这在需要加载自定义模块或从非标准位置加载 QML 文件时非常有用。通过使用 addImportPath() 方法,可以让 QML 引擎在额外的路径中查找 QML 模块。…...
ServiceNow UI Jelly模板注入漏洞复现(CVE-2024-4879)
0x01 产品简介 ServiceNow 是一个业务转型平台。通过平台上的各个模块,ServiceNow 可用于从人力资源和员工管理到自动化工作流程或作为知识库等各种用途。 0x02 漏洞概述 由于ServiceNow的Jelly模板输入验证不严格,导致未经身份验证的远程攻击者可通过构造恶意请求利用,在…...
项目部署笔记
1、安全组需开放(如果不开放配置nginx也访问不到) 2、域名解析配置IP(子域名也需配置IP,IP地址可以不同) 3、如果出现图片获其他的文件找不到的情况请仔细检查一下路径是否正确 4、服务器nginx配置SSL证书后启动报错: nginx: […...
PyCharm\VsCode——Python第三方库下载换源
为什么要换源? Python第三方库下载默认镜像源在国外,因为特殊的原因在国内的你我利用这个镜像源往往速度会非常地慢,因此为了提速将这个默认镜像源换成国内的镜像源是非常有必要的。 镜像源的种类有哪些? 国外镜像源——官方 http…...
图片上传裁剪react-cropper
效果图 安装插件 npm i react-cropper 或者 yarn add react-cropper 主要代码 import React, { useRef, useState } from react; import Cropper from react-cropper; import cropperjs/dist/cropper.css; import ./index.less; import { UploadOutlined } from ant-d…...
跨越空间的编码:在PyCharm中高效使用远程解释器
跨越空间的编码:在PyCharm中高效使用远程解释器 PyCharm的强大功能之一是支持远程解释器,这使得开发者能够在远程服务器或虚拟机上运行、调试代码,享受本地开发环境的便利。本文将详细介绍如何在PyCharm中配置和使用远程解释器,包…...
Vue3单文件jsx输出多组件示例遇到的坑
感谢博主减肥吧Evan提供的SFC实现多组件的思路和实现,小卷在大佬的基础上再完善下实现。 我们从tsx的API使用上得到启发,可以在vue的单文件组件(sfc)中使用defineComponent来定义和导出多个独立的小组件。此时sfc中的<templat…...
OpenCV中的轮廓检测cv2.findContours()
文章目录 前言一、查找轮廓二、绘制轮廓轮廓面积轮廓周长 前言 轮廓提取的前提,将背景置为黑色,目标为白色(利用二值化或Canny) 边缘检测,例如Canny等,利用梯度变化,记录图像中的边缘像素点&a…...
JFlash读取和烧录加密stm32程序
JFlash读取和烧录加密stm32程序 安装后JFlash所在的目录:C:\Program Files\SEGGER\JLink 一、烧写加密程序 1、打开C:\Program Files\SEGGER\JLink目录,找到JFlash.exe,双击它,就可以打开该执行程序。见下图: 2、选择“Create …...
【总结】实际业务场景中锁、事务、异常如何考虑使用?
文章目录 锁处理目的:考虑锁控制思路:生命周期接口并发控制解决方案:测试锁是否生效:模拟多线程并发场景的2种方式: 事务处理目的:考虑事务控制思路:解决方案: 总结 锁处理 目的&am…...
Pytorch使用Dataset加载数据
1、前言: 在阅读之前,需要配置好对应pytorch版本。 对于一般学习,使用cpu版本的即可。参考教程点我 导入pytorch包,使用如下命令即可。 import torch # 注意虽然叫pytorch,但是在引用时是引用torch2、神经网络获取…...
【nginx】nginx的优点
目录 一、高性能1.1 高并发处理1.2 低内存消耗1.3 快速响应 二、高扩展性2.1 模块化设计2.2 动态模块扩展 三、高可靠性3.1 核心框架稳定3.2 进程管理3.3 负载均衡与健康检查3.4 热部署 四、功能丰富4.1 反向代理4.2 HTTP缓存4.3 安全功能 五、易于配置和管理5.1 配置文件简单5…...
K8S ingress 初体验 - ingress-ngnix 的安装与使用
准备环境 先把 google 的vm 跑起来… gatemanMoreFine-S500:~/projects/coding/k8s-s/service-case/cloud-user$ kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master Ready control-plane,master 124d v1.23.6 k8s-no…...
qt 获取父控件
在 Qt 中,你可以通过调用 QWidget 的 parentWidget() 方法来获取一个控件的父控件。这个方法会返回一个指向父控件的指针,如果该控件没有父控件,则返回 nullptr。 以下是一个简单的示例,展示了如何获取一个按钮的父控件ÿ…...
flask基础配置详情
前言 一个简单的应用 app Flask(__name__) app.route("/") def hello_world():return "<p>Hello,World!"运行Flask应用 #flask命令运行flask --app hello run#使用Python命令进行运行python -m flask # 作为一个捷径,如果文件名为 app…...
终极风扇控制指南:3个步骤实现Windows系统智能温控与静音优化
终极风扇控制指南:3个步骤实现Windows系统智能温控与静音优化 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Tren…...
如何用Hogan.js自动生成模板文档:提升项目维护效率的终极指南
如何用Hogan.js自动生成模板文档:提升项目维护效率的终极指南 【免费下载链接】hogan.js A compiler for the Mustache templating language 项目地址: https://gitcode.com/gh_mirrors/ho/hogan.js Hogan.js是一款高效的Mustache模板语言编译器,…...
MySQL实战:主键与外键的5个常见设计误区及优化方案
MySQL实战:主键与外键的5个常见设计误区及优化方案 在数据库设计领域,主键和外键的合理运用直接影响着系统的稳定性和查询效率。许多开发者在项目初期往往忽视这些基础元素的设计规范,直到面临性能瓶颈或数据混乱时才追悔莫及。本文将揭示那…...
别再手动导入了!用Pinia + bpmn-js 实现Flowable流程设计的草稿自动恢复与状态管理
基于Pinia与bpmn-js的流程设计器草稿自动恢复方案 在流程设计器的开发过程中,用户最担心的莫过于编辑到一半的流程图因页面刷新或意外关闭而丢失。这种体验问题会直接影响产品的专业性和用户信任度。本文将详细介绍如何利用Vue3生态中的Pinia状态管理库,…...
极速配置APA第7版:学术效率工具效率指南
极速配置APA第7版:学术效率工具效率指南 【免费下载链接】APA-7th-Edition Microsoft Word XSD for generating APA 7th edition references 项目地址: https://gitcode.com/gh_mirrors/ap/APA-7th-Edition 在学术写作中,参考文献格式的规范是论文…...
2024年秋-华中科技大学-HUST-CSE-CTF实战入门:从Misc到PWN的解题思路与技巧精讲
1. CTF入门:从零开始的解题思维构建 第一次接触CTF比赛时,我完全被各种术语和题型搞懵了。Misc、PWN、Web、Reverse...这些名词就像天书一样。但经过几个月的实战,我发现CTF其实就像解谜游戏,关键在于建立正确的解题思维。 对于华…...
小白友好型OCR文字识别镜像:无需深度学习基础,开箱即用体验
小白友好型OCR文字识别镜像:无需深度学习基础,开箱即用体验 1. 为什么选择这款OCR镜像? 在日常工作和生活中,我们经常需要从图片中提取文字信息 - 可能是扫描的文档、拍摄的发票、或是路牌照片。传统OCR软件要么功能有限&#x…...
小程序逆向工具wxappUnpacker:源码还原技术全解析与实战指南
小程序逆向工具wxappUnpacker:源码还原技术全解析与实战指南 【免费下载链接】wxappUnpacker 项目地址: https://gitcode.com/gh_mirrors/wxappu/wxappUnpacker wxappUnpacker作为一款专注于微信小程序解析的开源工具,通过wxapkg解析技术实现编译…...
ThinkPad X220 安装 Arch Linux 完美指南
1 镜像准备 1.1 镜像下载 安装镜像 iso 在开源镜像站(推荐)或者 archlinux 官方下载页面 下载。 国内常用的提供 archlinux 安装镜像的开源镜像站(选一个即可): 中国科学技术大学开源镜像站清华大学开源软件镜像站…...
24GB显存利用率优化:OpenClaw长任务链对接Qwen3-14B的7个技巧
24GB显存利用率优化:OpenClaw长任务链对接Qwen3-14B的7个技巧 1. 为什么需要关注显存利用率? 上周我尝试用OpenClaw自动化处理一个包含200份PDF文档的信息提取任务时,系统在运行到第37个文件时突然崩溃。查看日志才发现是显存耗尽导致的OOM…...
