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

C56-字符串拷贝函数strcpy与strnpy

一 strcpy简介

功能:将源字符串(包括 \0)复制到目标地址。

原型

char *strcpy(char *dest, const char *src);
  • 参数:
    • dest:目标地址(需足够大)。
    • src:源字符串(以 \0 结尾)。
  • 返回值:返回 dest 的指针。

Example:

char src[] = "ABC";
char dest[10];
strcpy(dest, src); // dest 变为 "ABC"

风险:不检查 dest 空间,可能溢出(如 srcdest 长)

一句话总结:快速复制字符串,但需确保目标空间足够,否则用安全替代函数。

二 封装自己的strcpy函数

  • Example:
#include <stdio.h>
#include <string.h>//依据"strcpy"函数原型封装一个函数用于实现其功能
char *MyStrcpy(char *dest,char *string)
{   //正式操作前进行安全性检查if(dest==NULL||string==NULL){return NULL;}//函数的主体char *back=dest;    //对目标指针进行保存while(*string!='\0'){*dest=*string;dest++;string++;}*dest='\0';return back;
}int main()
{char str[128]={'\0'};char *p="Hello Word!";MyStrcpy(str,p);printf("%s",str);return 0;
}
  • Show:

image-20250531184324253

三 strncpy简介

功能:安全复制字符串,限制长度防溢出

用法

char *strncpy(char *dest, const char *src, size_t n);
  • 参数:

    • dest:目标缓冲区(存储复制结果)。
    • src:源字符串(以 \0 结尾)。
    • n:最多复制的字符数(包括 \0)。
  • 返回值:返回 dest 的指针。

  • 最多复制 n 个字符到 dest

  • src 较短,剩余空间补 \0

  • src 较长,不会自动加 \0

注意

  1. 需确保 dest 足够大

  2. 建议手动补\0

    dest[n-1] = '\0';
    

Example:

char dest[5];
strncpy(dest, "hello", 5);
dest[4] = '\0';  // 安全终止

特点

  • strcpy 安全
  • 需自行处理字符串终止

四 封装自己的strncpy函数

  • Example:
#include <stdio.h>
#include <string.h>//依据"strcpy"函数原型封装一个函数用于实现其功能
char *MyStrncpy(char *dest,char *string,int count)
{   //正式操作前进行安全性检查if(dest==NULL||string==NULL){return NULL;}//函数的主体char *back=dest;    //对目标指针进行保存while(*string!='\0'&&count>0){*dest=*string;dest++;string++;count--;}if(count>0){while(count>0){count--;*dest++='\0';}return dest;}*dest='\0';return back;
}int main()
{char str[128]={'\0'};char *p="Hello Word!";MyStrncpy(str,p,6);printf("%s",str);return 0;
}
  • Show:

image-20250531191052594

http://www.dtcms.com/a/449975.html

相关文章:

  • SAM、SECURITY、SYSTEM 和 NTDS.dit 的详细区别
  • 网站建网站建设企业北京网络教育
  • 通过super()正确初始化超类:Effective Python 第40条
  • 关于共享内存的梳理和总结
  • asp网站设计代做关键词推广效果分析
  • HTTP基础教程详解
  • 电子商务网站主要面向上海设计网站开发
  • 网站开发一般用哪个浏览器广州生物科技网站建设公司
  • 禹州市门户网站建设做网站开发一般用什么语言
  • 做非经营网站需要营业执照电商网站开发实战视频教程
  • 咸阳企业网站建设好看的免费网站模板下载 迅雷下载地址
  • LOD and Reflections Adding Details
  • 创建一个网站多少钱中山专业外贸网站建设
  • InnoDB强制恢复实战:紧急抢救数据指南
  • MATLAB计算日尺度旱涝急转指数(Dry-wet abrupt alternation index,DWAAI)
  • 公司购买网站怎么做分录石家庄网站建设流程
  • 04三个概念:时间序列、采样、告警
  • 第14节-增强表结构-Dropping-columns
  • 中山网站建设的价格wordpress 婚庆主题
  • LeetCode 刷题【103. 二叉树的锯齿形层序遍历、104. 二叉树的最大深度、105. 从前序与中序遍历序列构造二叉树】
  • joomla适合做什么网站弹性云主机做网站
  • 7.内置函数
  • 【深入理解计算机网络05】数据链路层:组帧,差错控制,流量控制与可靠传输
  • 夜神模拟器安装burp证书实现微信小程序抓包
  • 交互设计 网站推荐清美未来广告设计公司
  • 叮当快药网站谁做的网站改版 升级的目的
  • 佛山免费网站设计阿里云搭建wordpress
  • 大模型之用LLaMA-Factory微调Deepseek-r1-8b模型实践
  • 【C语言】寻找数组中唯一不重复的元素
  • 大数据成矿预测系列(三) | 从统计模型到机器学习:为何机器学习是成矿预测的新前沿?