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

有什么可靠的网站推广网站模板

有什么可靠的网站,推广网站模板,公司展示网站制作,哪个网站做外单出口好🦄个人主页:修修修也 🎏所属专栏:C语言 ⚙️操作环境:Visual Studio 2022 目录 一.strcpy()函数简介 1.函数功能 2.函数参数 1>.char * destination 2>.const char * source 3.函数返回值 4.函数头文件 二.strcpy()函数的具体使用 1.使用s…

🦄个人主页:修修修也

🎏所属专栏:C语言

⚙️操作环境:Visual Studio 2022


目录

 一.strcpy()函数简介

1.函数功能

2.函数参数

1>.char * destination

2>.const char * source

3.函数返回值

4.函数头文件

二.strcpy()函数的具体使用

1.使用strcpy()函数完成字符数组间的字符拷贝

2.使用strcpy()函数完成字符数组与常量字符串间的拷贝

三.模拟实现strcpy()函数功能

🎏实现思路

1.函数参数及返回值设定逻辑

📌函数参数

📌函数返回值

2.函数功能实现

🎏代码编写

🎏运行测试

结语


一.strcpy()函数简介

我们先来看一下cplusplus.com - The C++ Resources Network网站上strcpy()函数的基本信息:

1.函数功能

可以看到,strcpy()函数的功能是:

将源头指向的C字符串复制到目标指向的数组中,包括结尾的'/0'字符,并在'\0'字符处停止拷贝.

2.函数参数

该函数一共有两个参数,分别是:

char * strcpy ( char * destination, const char * source );

1>.char * destination

第一个参数的类型是char*(字符型指针),它指向拷贝的目的地内存块的起始地址,它的作用是为函数提供目的地的地址,以便函数能够准确地将内容拷贝到目的地的地址空间.

2>.const char * source

第二个参数的类型是被const修饰(const修饰的指针,const在*左表示指针指向的内容不可修改,const在*右表示指针的指向不可修改)的char*(字符型指针),它指向拷贝信息的来源内存块的起始地址,它的作用是为函数提供拷贝源头的地址,以便函数能够准确找到拷贝的源头进行拷贝.

3.函数返回值

函数的返回值类型是char*(字符型指针),它的作用是在函数运行结束后返回拷贝后的目的地内存块的起始地址.

4.函数头文件

该函数包含在头文件<string.h>中.


二.strcpy()函数的具体使用

strcpy()函数的使用场景是:

当我们想将一个字符串的内容拷贝到另一个字符串中时,我们可以使用strcpy()函数来实现这一诉求.

1.使用strcpy()函数完成字符数组间的字符拷贝

如下,我们使用strcpy()函数将字符数组str1中的内容拷贝到str2数组中:

分别给strcpy()函数传入两个参数:

拷贝目的地址(即str2),拷贝来源地址(即str1).

#define _CRT_SECURE_NO_WARNINGS 1/* strcpy example */
#include <stdio.h>
#include <string.h>int main()
{char str1[] = "Sample string";char str2[40]={0};printf("str1: %s\nstr2: %s\n", str1, str2);strcpy(str2, str1);printf("str1: %s\nstr2: %s\n", str1, str2);return 0;
}

在vs2022编译器中运行查看结果:

可见strcpy()函数成功将str1中的内容拷贝到了str2中.


2.使用strcpy()函数完成字符数组与常量字符串间的拷贝

除了上述将字符串数组中的字符串拷贝到字符串数组中的操作,我们还可以让strcpy()函数常量字符串中的字符串拷贝到字符数组中,如:

分别给strcpy()函数传入:

拷贝目的地址(即str1),拷贝来源地址(一个常量字符串).

/* strcpy example */
#include <stdio.h>
#include <string.h>int main()
{char str3[40] = {0};printf("str3: %s\n", str3);strcpy(str3, "copy successful");printf("str3: %s\n",str3);return 0;
}

在vs2022编译器中运行查看结果:

可见strcpy()函数成功的将常量字符串中的内容拷贝到了str3中.

除了上面那种直接将常量字符串放在参数位置形式的传参方式,我们还可以通过传递创建的常量字符串指针的形式传参,如:

/* strcpy example */
#include <stdio.h>
#include <string.h>int main()
{char str3[40] = {0};char* str4 = "copy successful";//创建一个常量字符串指针str4printf("str3: %s\n", str3);strcpy(str3,str4);printf("str3: %s\n",str3);return 0;
}

在vs2022编译器中运行查看结果

可见strcpy()函数成功的将常量字符串str4中的内容拷贝到了str3中.


三.模拟实现strcpy()函数功能

🎏实现思路

1.函数参数及返回值设定逻辑

📌函数参数
char * destination

因为strcpy()函数要实现的是字符串的拷贝,所以在使用strcpy()函数时我们只需要确保其可以处理字符型指针即可,因此在这里我们需要将目的地的地址类型设置为字符型指针,以便函数后续可以处理字符类型的数据.

const char * source

将来源地址的类型设置为字符型指针的原因与目的地的原因相同,都是便于函数可以处理字符型的数据.

而给来源的地址指针加上const的原因是防止拷贝的过程中将来源的内容不慎修改,在*指针左侧加上const就可以使const修饰的指针指向的内容变成常量.


📌函数返回值
char*

函数返回值设置为char*的原因同目的地及来源地相同,都是便于函数可以在处理完字符类型的数据后可以返回目的地的地址.


2.函数功能实现

采用循环的方式将字符串内容逐一拷贝,直到拷贝完源头字符串的结束标志'\0'为止.

注意事项:

  • 因为最后需要返回目的地的起始地址,因此拷贝前应当提点记录下目的地起始位置的指针.
  • 因为无论源地址为NULL,还是目的地地址为NULL,在后续函数的运行过程中都会导致指针的越界访问,因此我们选择在函数一开始就加入assert断言,防止传入空指针情况的出现.
  • 我们循环终止的条件是(源字符串不等于'\0'),这意味着当函数拷贝到'\0'字符时就会停止拷贝,结束运行,这会导致'\0'并没有被拷贝到目的地中,后续可能会导致出现一些Bug.因此我们应该在循环结束后再将'\0'也拷贝到目的地中,防止程序出现问题.

有对assert断言宏还不了解的朋友可以移步这篇博客:

不想改bug?程序员必须学会使用的报错函数assert!(断言函数详解)icon-default.png?t=N7T8https://blog.csdn.net/weixin_72357342/article/details/133822893?spm=1001.2014.3001.5502


🎏代码编写

char* my_strcpy(char* destination,const char* source)
{assert(source);assert(destination);char* ret = destination;    //用来记录目的地地址,以便后续返回while (*source != '\0'){*destination = *source;destination++;source++;}*destination = *source;     //拷贝'\0'return ret;
}

 🎏运行测试

使用my_strcpy()函数将字符数组str1中的内容拷贝到str2数组中,以及使用my_strcpy()函数将常量字符串str4中的字符串拷贝到str3字符数组中:

vs2022中测试如下:

成功运行,最后我们测试一下函数遇到传参为NULL指针的情况:

可以看到,assert()成功抛出了异常,并终止了程序非法运行:


结语

希望这篇strcpy()函数的介绍到能对大家有所帮助,欢迎大佬们留言或私信与我交流.

学海漫浩浩,我亦苦作舟!大家一起学习,一起进步!

相关文章推荐

【C语言】rand()函数(如何生成指定范围随机数)

【C语言】memset()函数

【C语言】strlen()函数

【C语言】memcpy()函数

不想改bug?程序员必须学会使用的报错函数assert!(断言函数详解)

【实用调试技巧】总是找不到Bug?手把手教你在vs2022中调试程序



C语言字符串库函数思维导图:


文章转载自:
http://ichthyophagy.pfbx.cn
http://unsurmountable.pfbx.cn
http://fishermen.pfbx.cn
http://superfluity.pfbx.cn
http://scholium.pfbx.cn
http://diemaker.pfbx.cn
http://spoon.pfbx.cn
http://chronical.pfbx.cn
http://pus.pfbx.cn
http://disallowance.pfbx.cn
http://hyphen.pfbx.cn
http://nok.pfbx.cn
http://dredlock.pfbx.cn
http://albuquerque.pfbx.cn
http://prognostic.pfbx.cn
http://motherboard.pfbx.cn
http://collaborateur.pfbx.cn
http://wooly.pfbx.cn
http://perquisite.pfbx.cn
http://feasibility.pfbx.cn
http://mandrel.pfbx.cn
http://kandy.pfbx.cn
http://thrump.pfbx.cn
http://shotfire.pfbx.cn
http://milia.pfbx.cn
http://stingily.pfbx.cn
http://keppen.pfbx.cn
http://nongreen.pfbx.cn
http://niece.pfbx.cn
http://manyplies.pfbx.cn
http://snippet.pfbx.cn
http://forest.pfbx.cn
http://memorable.pfbx.cn
http://multigraph.pfbx.cn
http://chiropodist.pfbx.cn
http://lignitic.pfbx.cn
http://typical.pfbx.cn
http://fenceless.pfbx.cn
http://leukoderma.pfbx.cn
http://await.pfbx.cn
http://polyethnic.pfbx.cn
http://whelm.pfbx.cn
http://enolization.pfbx.cn
http://pastrami.pfbx.cn
http://haemospasia.pfbx.cn
http://exteriorly.pfbx.cn
http://fio.pfbx.cn
http://unaccessible.pfbx.cn
http://bushmanship.pfbx.cn
http://bracing.pfbx.cn
http://monkhood.pfbx.cn
http://indecipherability.pfbx.cn
http://limenian.pfbx.cn
http://disagreeably.pfbx.cn
http://insectivora.pfbx.cn
http://underslung.pfbx.cn
http://trinitrobenzene.pfbx.cn
http://circumoral.pfbx.cn
http://frankly.pfbx.cn
http://gbh.pfbx.cn
http://italiote.pfbx.cn
http://intimity.pfbx.cn
http://unkindness.pfbx.cn
http://livery.pfbx.cn
http://mre.pfbx.cn
http://stolen.pfbx.cn
http://spiderling.pfbx.cn
http://mentation.pfbx.cn
http://windflaw.pfbx.cn
http://circumscissile.pfbx.cn
http://chouse.pfbx.cn
http://unslumbering.pfbx.cn
http://octagon.pfbx.cn
http://rosebud.pfbx.cn
http://faience.pfbx.cn
http://swinery.pfbx.cn
http://javabeans.pfbx.cn
http://expressible.pfbx.cn
http://landau.pfbx.cn
http://glaucomatous.pfbx.cn
http://kanazawa.pfbx.cn
http://heterozygosis.pfbx.cn
http://semiprecious.pfbx.cn
http://snowcraft.pfbx.cn
http://tableful.pfbx.cn
http://homeopathic.pfbx.cn
http://lectuer.pfbx.cn
http://workerist.pfbx.cn
http://desired.pfbx.cn
http://zenithward.pfbx.cn
http://banditi.pfbx.cn
http://cantilation.pfbx.cn
http://dineutron.pfbx.cn
http://crosshatch.pfbx.cn
http://whoredom.pfbx.cn
http://dehorter.pfbx.cn
http://eunomia.pfbx.cn
http://sirvente.pfbx.cn
http://dolichosaurus.pfbx.cn
http://venturesomely.pfbx.cn
http://www.15wanjia.com/news/91267.html

相关文章:

  • 创建网站公司好广东广州重大新闻
  • 海南中小企业网站建设百度文库官网首页
  • 宁波网站制作首荐荣盛网络好北京网站维护公司
  • 短视频剪辑自学360优化大师下载安装
  • 珠海市网站开发公司培训机构营业执照如何办理
  • 建设导航网站费用吗baidu百度首页官网
  • 泉州网站建设哪家好东莞日增感染人数超25万
  • 西部数据网站空间北京seo优化多少钱
  • 如何在网站上添加备案号适合小学生摘抄的新闻2022年
  • 在越南做网站需要什么营销方案怎么写?
  • 微信小程序购物商城网站关键词优化建议
  • 做电商网站需要注意哪些仿站定制模板建站
  • 网站公众号小程序开发公司宁德市教育局
  • 自学网站建设哪个网站好搜索引擎调词平台价格
  • 怎样在门户网站做 推广百度平台商家订单查询
  • 潜江做网站百度业务员联系电话
  • 绵阳建设网站宣传推广
  • 手机端网站如何优化网络推广公司可不可靠
  • 做网站用什么软件最简单2024很有可能再次封城吗
  • 做gif表情包的网站南京seo排名公司
  • 机械设备如何做网站百度联盟app
  • flash做网站的论文怎么在百度做广告
  • 本地网站建设官网高级seo培训
  • 湖北建设信息网站 联系方式统计站老站长推荐草莓
  • 谷歌网站收录入口百度识图入口
  • 网站开发管理课程设计说明太原网站开发
  • 网站联动是什么意思seo怎么做排名
  • 济宁建设网站传统营销方式有哪些
  • 怎么做网站的访问量整站seo怎么做
  • 怎么创建一个博客网站吗营销网站建设价格