c语言中自己写实现strcat(),strcpy(),strcmp()的函数

2023-11-20

c语言中的string.h头文件中虽然有这三个函数,但老师让我们自己写函数,所以添加了一点自己的想法写了这三个函数。

strcat:

#include <stdio.h>

void str_cat(char* p,char* q)
{
	while((*p) != '\0')//指针p移动到front尾
	{
		p++;
	}

	while((*q) != '\0')//将later每个字符串按个添加到front后
	{
		*p = *q;
		p++;
		q++;
	}
	*p = '\0';
	
}

int main()
{
	char front[128] = {0};//前一个字符串
	char later[64] = {0};//后一个字符串
	
	printf("输入两个字符串:\n");
	scanf("%s %s",front,later);
	
	str_cat(front,later);

	printf("结果为:\n");
	printf("%s\n",front);

	return 0;
}

strcpy:

#include <stdio.h>

void str_cpy(char* p,char* q)
{
	while((*q) != '\0')//将later的每个字符赋值给对应位置的front字符
	{
		*p = *q;
		p++;
		q++;
	}
	*p = '\0';
	
}

int main()
{
	char front[128] = {0};//前一个字符串
	char later[64] = {0};//后一个字符串

	scanf("%s %s",front,later);
	
	str_cpy(front,later);

	printf("%s\n",front);

	return 0;
}

strcmp:

#include <stdio.h>

int str_cmp(char* p,char* q)
{
	int front = 0;//记录front asc码总值
	int later = 0;//同上

	while((*p) == (*q) && (*p) != '\0' && (*q) != '\0')
	{
		p++;
		q++;
	}

	if((*p) == '\0' && (*q) == '\0')//两字符串完全相同只有一种情况
		return 0;
	else
	{
		if((*p) == '\0' && (*q) != '\0')
			return -1;
		if((*q) == '\0' && (*p) != '\0')
			return 1;

		while((*p) != '\0')
		{
			front = front + *p;
			p++;
		}

		while((*q) != '\0')
		{
			later = later + *q;
			q++;
		}

		if(front > later)
			return 1;
		if(front < later)
			return -1;
		if(front == later)//字符串不同但asc码总值相同返回-5
			return -5;
	}
}

int main()
{
	char front[128] = {0};//前一个字符串
	char later[64] = {0};//后一个字符串

	scanf("%s %s",front,later);

	printf("%d\n",str_cmp(front,later));



	return 0;
}

都是调用指针进行赋值,是对于指针的简单运用,供大家参考。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c语言中自己写实现strcat(),strcpy(),strcmp()的函数 的相关文章

随机推荐

  • LWIP学习笔记(2)---IP协议

    IP首部 最高位在左边记为 bit 最低位在右边 记为31 bit 传输顺序 先0 7bit 在8 15bit 然后16 13 最后24 31bit 这种方式称为 big endian 也叫网络字节序 版本 ipv4 或 6 ipv6 首部
  • Scanner类: next() 与 nextLine()与nextInt()

    next nextLine nextInt 是scanner内置的方法 next 1 一定要读取到有效字符后才可以结束输入 2 对输入有效字符之前遇到的空白 next 方法会自动将其去掉 3 只有输入有效字符后才将其后面输入的空白作为分隔符
  • 从零开始入门 K8s

    作者 至天 阿里巴巴高级研发工程师 一 基本知识 存储快照产生背景 在使用存储时 为了提高数据操作的容错性 我们通常有需要对线上数据进行 snapshot 以及能快速 restore 的能力 另外 当需要对线上数据进行快速的复制以及迁移等动
  • 解决cmd命令行运行java程序,编译通过,执行时却找不到主类的问题

    命令行中使用javac命令编译Train通过 使用java命令运行却找不到主类Trian 原因 有package的存在 编译成功后 需要返回上一层文件目录使用java命令执行train Trian 即 java命令后跟 包名称调用主类名称
  • Ubuntu和Windows使用Mmdetection训练Swin-Transformer+Mask-RCNN

    最近想用各种SOTA的Swin Transformer来试试实例分割效果 于是找了一下教程实验了一下 主要分为以下步骤 1 安装Mmdetection 这部分的教程很多 网上搜一下就行了 但是这里出错最多 2 下载Swin Transfor
  • java 获取list中的两两组合,给定一个数组,获取排列组合

    如题 获取一个数组中两两组合 示例 给定一个List lt 1 2 3 4 gt 输出 1 2 1 3 1 4 2 3 2 4 3 4 demo public static void main String args List
  • 几率大的网络安全面试题(含答案)

    其他面试题类型汇总 Java校招极大几率出的面试题 含答案 汇总 几率大的网络安全面试题 含答案 几率大的多线程面试题 含答案 几率大的源码底层原理 杂食面试题 含答案 几率大的Redis面试题 含答案 几率大的linux命令面试题 含答案
  • 【Linux】 Linux使用timedatectl命令修改时间报错

    Linux中可以使用timedatectl命令来修改系统时间信息 具体命令中常见的参数格式及作用如下 参数 作用 status 显示状态信息 list timezones 列出已知时区 set time 设置系统时间 set timezon
  • STM32学习笔记——USB鼠标

    最近搞了好久的STM32模拟USB鼠标 功能就是简单的利用三个按键实现滚轮和鼠标左右键的功能 USB功能其实已经集成好一个库了 我们只是对其中几个函数进行配置而已 其实很多配置还不是太懂 整个USB程序的过程大概就是1 中断配置 2 USB
  • 【win10】 设置应用开机自启动

    步骤如下 1 按Win r键 输入 shell startup 2 确定后会出现一个文件夹 把要开机启动的应用快捷方式放到里面 3 在任务管理器的启动里面进行设置 可以在状态字段选择启用或者禁用 放在文件夹里只是让它可以在任务管理器的启动里
  • jdk与jre的区别

    jdk与jre的区别 很多程序员已经干了一段时间java了依然不明白jdk与jre的区别 JDK就是Java Development Kit 简单的说JDK是面向开发人员使用的SDK 它提供了Java的开发环境和运行环境 SDK是Softw
  • 解决Ubuntu 20.04 node-v 和nodejs --version显示不同版本

    Ubuntu 20 04 node v 和nodejs version显示不同版本 1 删除原来的node js版本以及之前的软链接 我这里是输入node v显示4 0 0pre 首先要删除 卸载这个版本对应的node js文件 此时如果在
  • Match Points【Codeforces 1156C】【二分答案】

    题目链接 题意有点像上海EC某年的一道铜牌题 具体是哪年记不得了 我们要去N个的关系 使得最多的匹配对达到他们的差值 Z 这样的情况 有这样的一组数据可以很好的反映这道题为什么有人会WA了 4 3 1 4 5 7 但是 同时也证明了 我们取
  • 《机器学习实战》4.朴素贝叶斯

    目录 1 基于贝叶斯决策理论的分类方法 2 利用朴素贝叶斯进行文档分类 一般过程 3 使用python进行文本分类 3 1准备数据 从文本中构建词向量 3 2 训练算法 从词向量计算概率 3 3测试算法 根据现实情况修改分类器 3 4 准备
  • 【SDR】OpenBTS 介绍及安装

    前言 今天是元旦假期的第一天 还有两天 就要跨入2018年了 无心工作 写两篇博客吧 纪念一下自己的2017 也为2018开个好头 希望2018 我的三个愿望 能够圆满实现 好了 开始正题 前一段时间搭建了OpenBTS的环境 用于测试其相
  • 图形界面编程:使用C语言开发GUI应用

    使用C语言开发图形界面 GUI 应用通常涉及使用特定的库或框架 下面将为您提供一个详细的教程 以介绍使用C语言开发GUI应用的一般步骤和常用库 1 选择GUI库 C语言本身不提供直接的GUI支持 因此您需要选择一个适合的GUI库或框架 以下
  • C++ 文件流操作详解

    1 C I O流 本文章有很多内容参考并借鉴了 C primer plus 这本经典 这里先说明一下 1 C I O流 1 1 数据流 1 2 控制台流 1 3 文件流 1 3 1 什么是文件流 1 3 2 缓冲区 1 3 3 文件流和控制
  • 鸿蒙-No pending exception expected: java.lang.RuntimeException: Parcel:

    问题描述 学习鸿蒙开发 在利用intent封装数据 这里我是自定义了1个实体对象 然后作为list的元素 封装list 进行页面跳转时 总报下列异常 A com example ex thread cc 2560 No pending ex
  • 四种方式求最大公约数和最小公倍数

    最大公约数和最小公倍数 两个自然数的最大公约数与它们的最小公倍数的乘积等于这两个数的乘积 1 质因数分解法 把每个数分别分解质因数 再把各数中的全部公有质因数提取出来连乘 所得的积就是这几个数的最大公约数 例如 求24和60的最大公约数 先
  • c语言中自己写实现strcat(),strcpy(),strcmp()的函数

    c语言中的string h头文件中虽然有这三个函数 但老师让我们自己写函数 所以添加了一点自己的想法写了这三个函数 strcat include