strcpy和strncpy拷贝函数

1.strcpy函数

**Copies the C string pointed by source into the array pointed by destination, including the terminating null character (and stopping at that point). //摘自msdn
将源指向的C字符串复制到目标指向的数组中,包括终止的空字符(并在该点停止。

注意:

1.源字符串必须以 ‘\0’ 结束。
2.会将源字符串中的 ‘\0’ 拷贝到目标空间。
3.目标空间必须足够大,以确保能存放源字符串。
4.目标空间必须可变**

char* my_strcpy(char* str, const char* soure)
{
	char* dest = str; //定义一个char *指针变量指向str,修改str字符串的值。
	assert(dest != NULL && soure != NULL);//断言函数,判断值为0时终止程序。
	while (*dest++ = *soure++);//一个一个把soure的值赋给src,
	//先执行=操作后执行++操作,因为=优先级高。
	return str;     //str还是指字符串首地址,返回它。
}
    int main()
{
    char str1[20]="abcdef";
    char str2[20] = "ABCDEF";
	my_strcpy(str1, str2);
	puts(str1);
	return 0;
}

运行结果:
在这里插入图片描述

2.strncpy函数

Copies the first num characters of source to destination. If the end of the source C string (which is signaled by a null-character) is found before num characters have been copied, destination is padded with zeros until a total of num characters have been written to it. //摘自msdn
将源的第一个数字字符复制到目标。如果在复制num个字符之前找到源C字符串的结尾(由空字符表示),则目标将用零填充,直到总共写入num个字符为止。

注意:

1.拷贝num个字符从源字符串到目标空间。
2.如果源字符串的长度小于num,则拷贝完源字符串之,后在目标的后边追加0,直到num个

char *my_strncpy(char* str, const char* soure, size_t n)//把src所指字符串的前n个字符添加
{
	char *dest = str;
	assert(str != NULL && soure != NULL);//注意如果assert中的值为0时直接会终止掉程序
	while ((n-- > 0) && (*dest++ = *soure++));//相比strcpy函数多了一个只copy前n个字符。
	return str;
}
int main()
{
	char str1[20]= "abcdef";
	char str2[20] = "ABCDEF";
	my_strncpy(str1, str2,3);
	puts(str1);
	return 0;
}

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
strcpystrncpystrncpy_s都是C语言中用于字符串复制的函数strcpy函数用于将一个字符串复制到另一个字符串中。它的原型是: char *strcpy(char *dest, const char *src) strncpy函数也用于将一个字符串复制到另一个字符串中,但它还可以指定要复制的最大字符数。它的原型是: char *strncpy(char *dest, const char *src, size_t n) strncpy_s函数是C11标准引入的安全版本的strncpy函数。它提供了更强的安全性,可以预防缓冲区溢出。它的原型是: errno_t strncpy_s(char * str2, rsize_t size2, const char * str1, rsize_t size1) 在这些函数中,dest表示目标字符串,src或strSource表示源字符串,n或size表示要复制的字符数或缓冲区的大小。这些函数都返回指向目标字符串的指针。 需要注意的是,strncpystrncpy_s函数在复制过程中可能不会自动添加字符串结束符'\0',因此在使用这两个函数时,需要手动添加结束符,以确保字符串的正确结束。 总结起来,strcpy是将一个字符串复制到另一个字符串中;strncpy是在指定的字符数内将一个字符串复制到另一个字符串中;strncpy_s是C11标准中引入的安全版本的strncpy函数,可以预防缓冲区溢出。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [strcpystrcpy_s、strncpystrncpy_s 字符串拷贝用法](https://blog.csdn.net/weixin_44084447/article/details/122244567)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值