c语言的字符串拷贝函数strcpy()的行为

news/2024/7/8 9:12:44 标签: c语言, 开发语言
/**
 * 字符串函数
 * 符串复制函数
 * strcpy()和strncpy()
 * 覆盖行为
 *
 * strcpy()简单易用,但需要程序员确保目标缓冲区足够大,以避免缓冲区溢出。
 * strncpy()提供了限制复制字符数的能力,增加了安全性,
 * 但使用时需注意目标字符串可能不会自动补全\0的问题,需要额外处理以确保字符串的完整性。
 *
 */
#include <stdio.h>
#include <string.h>

int main()
{
    char dest[7] = "aaaaaa";
    char src[4] =  "bbb";

    strcpy(dest, src); // 使用strcpy复制src到dest

    // 获取dest字符串的结尾地址
    char *endOfDest = dest + strlen(dest);

    // 输出dest字符串后面的字符(如果存在)
    printf("Character after the string: '%c'\n", *(endOfDest + 1));
    printf("Next character: '%c'\n", *(endOfDest + 2));
    printf("Next character: '%c'\n", *(endOfDest + 3));

    return 0;
}

运行结果:

Character after the string: 'a'
Next character: 'a'
Next character: ''

内存模型:

dest = ‘a’,‘a’,‘a’,‘a’,‘a’,‘a’,‘\0’

src = ‘b’,‘b’,‘b’,‘\0’

拷贝后:

dest = ‘b’,‘b’,‘b’,‘\0’,‘a’,‘a’,‘\0’

src = ‘b’,‘b’,‘b’,‘\0’

通俗来说,strcpy()就是把src的字符,包括\0,按照相同的顺序依次替换掉dest的字符。在程序上来说,后面的 ‘a’,‘a’,‘\0’,已经没有意义了,但是物理上还是存在着。


http://www.niftyadmin.cn/n/5536973.html

相关文章

【漏洞复现】Emlog Pro 2.3.4——任意用户登入、会话持久化(CVE-2024-5044)

声明&#xff1a;本文档或演示材料仅供教育和教学目的使用&#xff0c;任何个人或组织使用本文档中的信息进行非法活动&#xff0c;均与本文档的作者或发布者无关。 文章目录 漏洞描述漏洞复现 漏洞描述 漏洞编号&#xff1a;CVE-2024-5044 漏洞成因&#xff1a; 在Emlog Pro …

北斗在森林防火中的应用

森林是地球上最重要的生态资源之一&#xff0c;不仅为各种动植物提供栖息地&#xff0c;还在调节气候、维护水源等方面起着举足轻重的作用。然而&#xff0c;近年来随着全球气候异常和人类活动的增加&#xff0c;森林火灾频发&#xff0c;对生态环境和人类社会造成了严重影响。…

arduino和esp-idf的区别

arduino和esp-idf的关系 arduino开发esp时&#xff0c;使用的也是esp-idf&#xff0c;只不过对esp-idf进行了包装。 arduino中的esp-idf版本会落后于官方版本。 arduino和esp-idf的区别 arduino主要用于教育领域&#xff0c;开发方便&#xff0c;快捷。但是要求你写的代码必…

Linux脚本自动安装 docker

使用官方安装脚本自动安装 需使用 root 或sudu 权限账户安装 安装命令如下&#xff1a; curl -fsSL https://test.docker.com -o install-docker.shsudo sh install-docker.sh脚本中指令: –version 安装指定版本 Use the --version option to install a specific version, f…

python自动化办公之BeautifulSoup爬取并解析html文本

用到的库&#xff1a;BeautifulSoup 实现效果&#xff1a;爬取网站内容&#xff0c;拿到html文本并解析html文本 代码&#xff1a; 先爬取 # 先导入requests包 import requests urlhttps://www.baidu.com responserequests.get(url) # 做1个断言&#xff0c;如果执行成功&a…

Java集合框架:深入探索与性能优化指南

引言 Java集合框架是Java标准库中用于存储和操作对象集合的一套工具。它提供了一套统一的接口和类,使得开发者可以高效地处理对象集合,而无需关心底层的实现细节。Java集合框架主要包括List、Set、Map等接口及其实现类。本文将详细介绍Java中的集合框架,并分享如何选择和使用…

JVM原理(十六):JVM虚拟机类型擦除与泛型发展

1. 泛型 泛型的本质是参数化类型或者参数化多态的应用&#xff0c;即可以将操作的数据类型指定为方法签名中的一种特殊参数&#xff0c;这种参数类型能够用在类、接口和方法的创建中&#xff0c;分别构成泛型类、泛型接口和泛型方法。 泛型让程序员能够以针对泛化的数据类型编…

无人机5公里WiFi低延迟图传模组,抗干扰、长距离、低延迟,飞睿智能无线通信新标杆

在科技日新月异的今天&#xff0c;我们见证了无数通信技术的飞跃。从开始的电报、电话&#xff0c;到如今的4G、5G网络&#xff0c;再到WiFi的广泛应用&#xff0c;每一次技术的革新都极大地改变了人们的生活方式。飞睿智能5公里WiFi低延迟图传模组&#xff0c;它以其独特的优势…