C语言 用指针实现字符串函数 strlen strcpy strcat strcmp

2023-05-16

目录

一、指针模拟实现strlen()函数
                  1.strlen() 函数description

2.用指针实现且将strlen封装。

3.运行结果。

二、指针模拟实现strcpy()函数

1.strcpy() 函数description 

2.用指针实现且将strcpy封装。

3.运行结果。

三、指针模拟实现strcat()函数

1.strcat() 函数description

2.用指针实现且将strcat封装。

3.运行结果。

四、指针模拟实现strcmp()函数

1.strcmp() 函数description

2.用指针实现且将strcmp封装。

3.运行结果。


一、指针模拟实现strlen()函数

1.strlen() 函数description

 strlen() 函数计算 src 指向的字符串的长度,
                                  不包括终止空字节 ('\0')。

2.用指针实现且将strlen封装。

#include <stdio.h>
#include <string.h>

unsigned int mystrlen(const char *p);

int main(int argc, const char *argv[])
{
	char arr[128] = {0};
	//scanf("%s",arr);
	//不能用scanf输入,scanf遇到空格会停止,不会把空格及之后的字符计算进去
	gets(arr);
	int lenth = mystrlen(arr);
	printf("输入的字符串长度为%d\n",lenth);
	int sum = strlen(arr);		
	printf("输入的字符串长度为%d\n",sum);
	return 0; 
}

unsigned int mystrlen(const char *p){
	int i = 0;
	while('\0'!= *(p+i)){ //注意在这是'\0',不是'0'
		i++;
	}
	return i;
}

3.运行结果。

二、指针模拟实现strcpy()函数

1.strcpy() 函数description 

 strcpy() 函数将 src 指向的字符串,
包括终止空字节 ('\0') 复制到目标字符串,
字符串不能重叠,并且目标字符串 dest 必须足够大以接收副本。
小心缓冲超支!即数组越界。 

2.用指针实现且将strcpy封装。

#include <stdio.h>

void mystrcpy(const char *p,char *q){
	int i = 0;
	while(*(p+i)){
		*(q+i) = *(p+i);
		i++;
	}
	printf("%p\n",p);
	printf("%p\n",q);
}

int main(int argc, const char *argv[])
{
	char arr[128] = {0};
	gets(arr);
	char dest[128] = {0};
	printf("%p\n",arr);
	printf("%p\n",dest);
	mystrcpy(arr,dest);
	printf("你输入的是arr = %s\n",arr);
	printf("已经复制到dest = %s\n",dest);
	return 0;
}

3.运行结果。
 

三、指针模拟实现strcat()函数

1.strcat() 函数description

 strcat() 函数将 src 字符串附加到 dest 字符串,覆盖 dest 末尾的终止空字节('\0'),
然后添加一个终止空字节。
字符串不能重叠,dest 字符串必须有足够的空间用于结果。 
如果dest不够大,程序行为是不可预测的;
缓冲区溢出是攻击安全程序的常用途径。

2.用指针实现且将strcat封装。

#include <stdio.h>

unsigned int mystrlen(const char *p);
void mystrcat(char *dest, const char *str){
	int sum = mystrlen(dest);
	int i = 0;
	while(*(str+i)){
		*(dest+sum+i) = *(str+i);
		i++;
	}
}
int main(int argc, const char *argv[])
{
	char str[128] = {0};
	gets(str);
	char dest[128] = "hello";
	printf("你输入的字符串是 %s\n",str);
	printf("dest原来是 %s\n",dest);
	mystrcat(dest,str);
	printf("它俩拼接后是 %s\n",dest);
	
	return 0;
}
unsigned int mystrlen(const char *p){
	int i = 0;
	while(*(p+i)){
		i++;
	}
	return i;
}

3.运行结果。

四、指针模拟实现strcmp()函数

1.strcmp() 函数description

 strcmp() 函数比较两个字符串 s1 和 s2。
如果 s1,它返回一个小于、等于或大于零的整数
分别被发现小于、匹配或大于 s2。

2.用指针实现且将strcmp封装。

#include <stdio.h>
#include <stdlib.h>

int mystrcmp(const char *p,const char *q){
	for(;*p == *q;q++,p++){ 		//想复杂了,把各种情况都想到了
									//其实只用一个对一个比较就行,不用考虑字符串的长短
		if('\0' == *p)
			return 0;
	}
	return *p - *q;
}

int main(int argc, const char *argv[])
{
	char arr[128] = {0};
	char arr1[128] = {0};
	int cha = 0;
	puts("请输入你想比较的第一个字符串");
	scanf("%s",arr);
	getchar();
	puts("请输入你想比较的第二个字符串");
	scanf("%s",arr1);
	cha = mystrcmp(arr,arr1);
	if (cha > 0){
		printf("字符串1比字符串2大%d\n",cha);
	}else if (0 == cha){
		printf("字符串1和字符串2一样大\n");
	} 
	if (cha < 0){
		printf("字符串2比字符串1大%d\n",abs(cha));
	} 

	return 0;
}

3.运行结果。

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

C语言 用指针实现字符串函数 strlen strcpy strcat strcmp 的相关文章

随机推荐

  • 串口传输 波特率 延时时间的设置

    在进行串口传输的时候 xff0c 波特率太低接收不到 xff0c 波特率太高又丢包 首先 xff0c 传输的报文需要多少时间 起始位1 xff0c 停止位1 xff0c 数据位8 xff0c 则传输时间为 xff1a 1000 xff08
  • 阶段进度条

    public class PhaseProgressView extends View 节点连线宽度 private int mLineWidth 节点个数 private int mNodeNum 选中节点位置 private int m
  • 计算机网络实验——基于TCP协议的socket编程

    一 实验目的 1 实现一个能够在局域网中进行点对点聊天的实用程序 2 熟悉c 43 43 Java等高级编程语言网络编程的基本操作 3 基本了解对话框应用程序的编写过程 4 实现TCP套接字编程 二 实验内容 xff08 一 xff09 实
  • GPRMC 格式

    数据示例 GPRMC 081057 000 A 3117 2144 N 12133 2691 E 0 02 0 00 140521 D 68 在数据 GPRMC lt 1 gt lt 2 gt lt 3 gt lt 4 gt lt 5 gt
  • 音视频开发基础概念

    对一个初学者来说 xff0c 刚刚接触音视频的学习难免会遇到各种个样的术语 xff0c 一开始我也是云里雾里的 xff0c 到现在一点一点接触积累 xff0c 形成一个基本的认识 本文并没有什么高深和详细的知识点 xff0c 旨在记录一些音
  • 音频数据采集-AudioRecord

    一 AudioRecord 和 MediaRecorder Android 提供了两个 API 用于录音 xff0c AudioRecord 和 MediaRecorder AudioRecord 能够获取原始的 PCM 数据 xff0c
  • vector用法

    介绍 1 vector是表示可变大小数组的序列容器 2 就像数组一样 xff0c vector也采用的连续存储空间来存储元素 也就是意味着可以采用下标对vector的元素进行访问 xff0c 和数组一样高效 但是又不像数组 xff0c 它的
  • AAC 音频编码保存和解码播放

    一 编码器 MediaCodec MediaCodec 是 Android 提供的用于对音频进行编解码的类 xff0c 属于硬编解 MediaCodec 在编解码的过程中使用了一组缓冲区来处理数据 如下图所示 基本使用流程如下 xff1a
  • Camera 视频采集,H264 编码保存

    一 前言 上篇文章 AAC 音频编码保存和解码播放 讲述了通过 AudioRecord 录制音频数据 xff0c 并通过 AAC 编码保存为 AAC 文件 这里的 aac 既是一种编码方式 xff0c 也是一种容器 xff0c 因此可以直接
  • 基于Camera、AudioRecord 、MediaCodec 和 MediaMuxer 录制 MP4

    一 前言 在 AAC 音频编码保存和解码播放和Camera 视频采集 xff0c H264 编码保存 两篇文章中介绍了如何通过 AudioRecord 和 MediaCodec 录制 AAC 音频以及如何通过 Camera 和 MediaC
  • 基于 SurfaceView、AudioTrack、MediaCodec 和 MediaExtractor 解码 MP4 播放

    一 前言 上篇文章介绍了 基于Camera AudioRecord MediaCodec 和 MediaMuxer 录制 MP4 录制的过程是这样的 xff0c 那么相应的播放过程就是上述过程的逆过程 xff0c 本篇文章将介绍如何通过 M
  • 研发、运营必备实用工具网站

    目录 1 搜索引擎 2 PPT 3 图片操作 4 文件共享 5 招聘求职 6 程序员面试题库 7 办公 开发软件 8 高清图片 视频素材网站 9 项目开源 10 算法 11 在线工具宝典大全 12 音乐 13 神辅助工具 14 语音处理 1
  • 让人“眼前一亮、不明觉厉”的互联网技术PPT

    目录 1 互联网 1 1 智能 43 1 2 云计算 1 3 5G 2 大数据 2 1 用户画像 2 2 边缘计算 2 3 工业大数据 2 4 医疗大数据 2 5 数据平台 2 6 银行大数据 3 物联网 3 1 物联网产业 3 2 工业物
  • 基于FPGA的电梯控制系统设计

    在本项目中一共分为了五个模块 xff1a 时钟分频 按键消抖 状态控制 蜂鸣 译码显示及流水指示灯 其模块的作用分别是 xff1a 时钟分频 xff1a 将高频率系统时钟通过分频得到不同合适频率的时钟频率作为不同模块的输入时钟 clk xf
  • 【流媒体视频监控平台开发wvp-GB28181-pro】

    wvp GB28181 pro学习心得 wvp与GB28181介绍1 流媒体服务器视频协议介绍2 市面上的流媒体服务器3 wvp GB28181 pro框架需要学习的框架和工具4 工具准备项目整合和配置 wvp与GB28181介绍 学习原因
  • gazebo创建机器人模型06

    gazebo创建机器人模型05 kinect 信息仿真以及显示 kinect摄像头仿真基本流程 xff1a 1 已经创建完毕的机器人模型 xff0c 编写一个单独的 xacro 文件 xff0c 为机器人模型添加 kinect 摄像头配置
  • 【C++】C++中防止头文件重复包含的两种方法

    文章目录 01 错误分析 xff1a 类型重定义 xff08 头文件重复包含 xff09 02 解决方案2 1 微软宏2 2 条件编译2 3 两种方法比较 03 变量被重复包含3 1 解决办法 04 版权声明 amp 总结 01 错误分析
  • C/C++程序员应聘常见面试题深入剖析

    1 引言 本文的写作目的并不在于提供C C 43 43 程序员求职面试指导 xff0c 而旨在从技术上分析面试题的内涵 文中的大多数面试题来自各大论坛 xff0c 部分试题解答也参考了网友的意见 许多面试题看似简单 xff0c 却需要深厚的
  • Nvidia jetson tx2 详细安装、配置教程以及固定ip

    jetson tx2 是什么 一 硬件组装 xff1a 1 将 Wi Fi 天线插上 xff0c 组装好充电器即可 2 接口介绍 xff1a USB接口只有一个 xff08 建议使用USB拓展 xff0c 方便前期配置的时候连接键盘鼠标 x
  • C语言 用指针实现字符串函数 strlen strcpy strcat strcmp

    目录 一 指针模拟实现strlen 函数 1 strlen 函数description 2 用指针实现且将strlen封装 3 运行结果 二 指针模拟实现strcpy 函数 1 strcpy 函数description 2 用指针实现且将s