c语言 strcpy,strcat,strcmp函数模拟实现_strcpy和strcmp函数实现_程序猿是小贺的博客-程序员宅基地

技术标签: c语言  字符串  

c语言 字符串strcpy,strcat,strcmp用函数实现

利用函数实现字符串拷贝

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
char *my_strcpy(char *str1, const char *str2)
{
    
	//参数有效性检测
	if (str1 == NULL&&str2 == NULL)
	{
     
		return NULL;
	}
/*
此处也可以运用断言
assert(srt1!=NULL&&str2!=NULL)
*/

	//保护参数,否则拷贝完成时会改变其地址
	char *pstr = str1;
	while (*str2 != '\0')
	{
    
		*pstr = *str2;
		str2++;
		*pstr++;
	}
	*pstr = *str2;   //将最后的\0赋过去
	return str1;
}
void main()
{
    
	char str1[30] = "Hello ";
	char *str2 = "Linux";
	printf("str1=%s\n",str1);
	char *res = my_strcpy(str1, str2);
	printf("str1=%s\n",res);
}

函数实现字符串链接

函数实现字符串链接
#include<stdio.h>
#include<stdlib.h>
char *my_strcat(char *str1, const char *str2)
{
    
	//参数有效性检测
	if (str1 == NULL && str2 == NULL)
	{
    
		return NULL;
	}

	//保护参数
	char *pstr1 = str1;
	char *pstr2 = str2;
	while (*pstr1 != '\0')           //检查pstr1是否为\0,不是则pstr1++,否则不执行
	{
    
		*pstr1++;
	}
	while (*pstr2!='\0')
	{
    
		*pstr1++ = *pstr2++;;
	}
	*pstr1 = '\0';   //将\0赋过去
	return str1;
}
void main()
{
    
	char str1[30] = "Hello ";
	char *str2 = "Linux";
	printf("str1=%s\n", str1);
	char *res = my_strcat(str1, str2);
	printf("str1=%s\n", res);
}

函数实现字符串比较

#include<stdio.h>
#include<stdlib.h>
char *my_strcmp(const char *str1, const char *str2)
{
    
	//参数有效性检测
	if (str1 == NULL && str2 == NULL)
	{
    
		return NULL;
	}

	//由于定义了两个const类型的参数,所以不用保护参数
	int res;                    //定义一个值res接收结果
	while (*str1 != '\0' || *str2 != '\0')
	{
    
		res = *str1 - *str2;
		if (res != 0)
			break;
		*str1++;
		*str2++;
	}
	return res;
}
void main()
{
    
	char *str1 = "Hello ";
	char *str2 = "Hello max";
	int res = my_strcmp(str1, str2);
	printf("res=%d\n", res);
}

–end

  • 由于作者能力有限,目前也只能够了解这些,若是有大佬有不一样的想法欢迎评论区不吝赐教,批评,我一定虚心接受
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44940405/article/details/115867313

智能推荐

CentOS7.9下安装Oracle19c-程序员宅基地

文章浏览阅读3.3k次,点赞2次,收藏13次。安装前准备工作准备一台带有桌面的CentOS 7.x操作系统的服务器。 到Oracle官网下载安装包,选择Linux x86-64,下载入口。进入操作系统后修改系统自带的yum源,命令如下:#首先备份系统原先的yum源mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak#获取阿里云的yum源配置文件wget -O /etc/yum.repos.d/CentOS-Base.repo http

redis启动警告问题:WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/so_ChangYan.的博客-程序员宅基地

文章浏览阅读6.5k次。启动redis会有如下WARNING对一个高负载的环境来说tcp设置128这个值,太小了。想要永久解决该问题,首先需要关闭redis,然后打开/etc/sysctl.confsudo vim /etc/sysctl.conf然后再最后加上net.core.somaxconn= 1024如图:之后再执行如下指令sudo sysctl -p进行更新。再重启redis就可以解决了!关于如何重启redis请参考我本篇文章:https://blog.csdn.net/changyana/ar_the tcp backlog setting of 511 cannot be enforced because /proc/sys/net/core

粤桂协作从玉农业签约 农业大健康·林裕豪:中国金控粤桂帮扶_经信研究的博客-程序员宅基地

文章浏览阅读284次。粤桂协作从玉农业签约 农业大健康·林裕豪:中国金控粤桂帮扶新闻中国采编网 中国新闻采编网 谋定研究中国智库网 国研智库 国情讲坛 谋定论道 经信研究 哲商对话 万权采编:11月5日-7日,对话功能性农业农业大健康大会中国农民丰收节交易会,2021年粤桂协作消费对接活动暨第20届广西名特优农产品(广州)交易会举行。广西自治区党委书记刘宁,自治区党委副书记、自治区主席蓝天立,自治区党委副书记刘小明,自治区党委常务、常务副主席秦如培,自治区党委常务、南宁市委书记王小东,自治区党委常务、秘书长黄伟京,自治区副主

U-boot源码简要分析(一)-程序员宅基地

文章浏览阅读545次。1.U-boot源码整体框架源码解压以后,我们可以看到以下的文件和文件夹: cpu与处理器相关的文件。每个子目录中都包括cpu.c和interrupt.c、start.S、u-boot.lds。cpu.c初始化CPU、设置指令Cache和数据Cache等interrupt.c设置系统的各种中断和异常start.S是U-boot启动时执行的第一个文件,它主要做最早其的系统初始化,

最受IT公司欢迎的50款开源软件_blackduck 替代产品-程序员宅基地

文章浏览阅读8k次。过去十年间,许多科技公司已开始畅怀拥抱开源。许多公司使用开源工具来运行自己的 IT 基础设施和网站,一些提供与开源工具相关的产品和服务,或基于开源工具而建的产品和服务,还有一些在为开源代码贡献代码或支持开源项目。Black Duck 在 2015 年的一项调查发现,78% 的企业组织使用开源软件,这个比例几乎是 2010 年时候的两倍。此外,88% 的企业表示,它们预计在今后几年,会加大为开源..._blackduck 替代产品

vuex引入_vuex的引入-程序员宅基地

文章浏览阅读410次。1,安装vuexnpm install vuex --save2,src文件夹下src/store/index.js来注册vuex import Vue from 'vue';import Vuex from 'vuex';Vue.use(Vuex);const store = new Vuex.Store({ getters}) export defau..._vuex的引入

随便推点

马云所说的大数据人才,月薪高达30K!-程序员宅基地

文章浏览阅读357次。点击上方“Python大本营”,选择“置顶公众号”Python大本营 IT人的职业提升平台马云曾在卸任演讲的时候说过这样一段话:“很多人还没搞清楚什么是PC互联网,移动互联网来了,我..._大数据工程师月薪30k

计算机专业英语词汇总结-程序员宅基地

文章浏览阅读7.6k次,点赞20次,收藏244次。第一部分、计算机算法常用术语中英对照Data Structures 基本数据结构Dictionaries 字典Priority Queues 堆Graph Data Structures 图Set Data Structures 集合Kd-Trees 线段树Numerical Problems 数值问题Solving Linear Equations 线性方程组Bandwidth Reduction 带宽压缩Matrix Multiplication 矩阵乘法Determinants _计算机专业英语

OpenFalcon中plugin在FalconAgent中的使用概要说明_falcon plugins-程序员宅基地

文章浏览阅读323次。一、Plugin定义对于Plugin机制,叙述之前必须要强调一下: Plugin可以看做是对agent功能的扩充。对于业务系统的监控指标采集,最好不要做成plugin,而是把采集脚本放到业务程序发布包中,随着业务代码上线而上线,随着业务代码升级而升级,这样会比较容易管理。(承述来自OpenFalcon官方文档中关于plugin机制相关说明)二、Plugin使用步骤1...._falcon plugins

Android 应用程序版本(versionCode, versionName)-程序员宅基地

文章浏览阅读397次。在程序升级/维护过程中,版本控制是一个很重要的内容。用户需要了解安装到设备上的应用程序的版本信息,以及了解哪些版本可以进行升级。其它应用程序——包括你发布的其它程序——需要向系统查询你的应用程序的版本,来确定相互之间的兼容性。 你的应用程序发布的服务可能也需要查询版本来显示给用户。Android系统自身不检查应用程序的版本信息,也不会强制限制升级或兼容等。相反的,只是用户或应用程序

Qt调用dll lib 一种简单方法_qt lib += -l$$pwd-程序员宅基地

文章浏览阅读2.7k次。在最近用Qt调库的时候经常遇到一些花里胡哨的问题你有dll lib 以及头文件的时候,将dll放置你的debug目录,而lib随便放置一个位置,只要你路径知道将lib的api头文件放置你的工程,可以和你的main.cpp放在同一个目录,最好添加进你的工程就可以。绕后在你 pro 文件配置 在配置中加上LIBS += -L$$PWD"lib库的路径"-l"lib名"如LIBS +..._qt lib += -l$$pwd