当前位置: 首页 > news >正文

C语言初阶习题【25】strcpy的模拟实现

1. 首先先调用下库函数,看它实现了什么

在这里插入图片描述

2. 我们自己实现一个strcpy函数

在这里插入图片描述

3. 改进1

把*destnation++和source++
写上去,使用后置++
在这里插入图片描述

4. 改进2

这里直接把赋值操作放到了while的判断条件里面,然后while循环语句什么都不做,放了一个空语句(就是一个;)
判断流程是这样的
进入我们的函数之后,直接开始while语句
(1)执行while条件语言,直接将 * source的值赋值给 * destnation 只要这句语句不等于0就一直循环
(2)后置++ 然后一个一个把goodnight的值赋值过去,
(3)最后到‘\0’、相当于*destnation=‘\0’ 就是等于0,此时表达式为假
(4)所以while(表达式为假) 跳出循环 ,并且我们的’\0’也拷贝过去了 。

#define _CRT_SECURE_NO_WARNINGS 1
//模拟实现strlen 函数#include<stdio.h>
#include<string.h>
void my_strcpy(char *destnation,char* source)
{while (*destnation++ = *source++){;}}
int main()
{char str1[10] = { 0 };char str2[] = "goodnight";my_strcpy(str1, str2);printf("%s", str1);return 0;
}

在这里插入图片描述
调试,可以在局部变量看,也可以在内存窗口看str1的变化。
在这里插入图片描述

5.改进3

加入assert

#include <assert.h>void my_strcpy(char* dest, char* src)
{/*if (src == NULL || dest == NULL){return;}*///断言//assert中可以放一个表达式,表达式的结果如果为假,就报错,如果为真啥事都不发生//assert 其实在release版本中优化了/*assert(src != NULL);assert(dest != NULL);*/assert(dest && src);while (*dest++ = *src++){;}
}void my_strcpy(char* dest, char* src)
{assert(dest && src);//断言指针的有效性while (*dest++ = *src++){;}
}

http://www.mrgr.cn/news/83175.html

相关文章:

  • ollama+FastAPI部署后端大模型调用接口
  • 【C++】std::string和size()函数进阶解析
  • C# 中await和async的用法(一)
  • Qt之Cannot create children for a parent that is in a different thread问题分析
  • 大数据架构设计:数据分层治理的全景指南
  • 【轻松学C:编程小白的大冒险】--- C语言简介 02
  • ubuntu编译安装libvirt
  • 深度学习与计算机视觉 (博士)
  • 如何让用户在网页中填写PDF表格?
  • 【人工智能】基于Python与OpenCV构建简单车道检测算法:自动驾驶技术的入门与实践
  • AI大模型-提示工程学习笔记5-零提示
  • Spring Framework 5.3.x源码构建 (jdk-1.8, gradle 7.5.1, idea2024.3)
  • 【STM32+QT项目】基于STM32与QT的智慧粮仓环境监测与管理系统设计(完整工程资料源码)
  • 【深度学习】布匹寻边:抓边误差小于3px【附完整链接】
  • 用Python进行大数据处理:如何使用pandas和dask处理海量数据
  • Vue3 + Vite + Electron + Ts 项目快速创建
  • 【VBA】【EXCEL】将某列内容横向粘贴到指定行
  • 《HeadFirst设计模式》笔记(上)
  • Python 通过命令行在 unittest.TestCase 中运行单元测试
  • Ollama私有化部署大语言模型LLM(上)
  • 交响曲-24-3-单细胞CNV分析及聚类
  • web服务器架构,websocket
  • Linux 下 Vim 环境安装踩坑问题汇总及解决方法(重置版)
  • Visio 画阀门 符号 : 电动阀的画法
  • (一)Ubuntu20.04版本的ROS环境配置与基本概述
  • [开源]自动化定位建图系统(视频)