字符串复制比较

strcpy、strncpy、sprintf、snprintf、memcpy

从以下几个方面对比:
 

1.结束判断依据

strcpy(A,B):当B遇到\0时,结束。并且\0会被复制到A中。但不会判断A的长度,所以需要自行确保len(A)>=len(B)

strncpy(A,B,n):当B遇到\0或复制了n个字符时,结束。这个函数拷贝的是字符,不拷贝串,如果先遇到\0,则函数会把剩余的字符补\0,如果先满足n的条件,则需要自己处理结束符

sprintf:和strcpy的用法类似。

snprintf(A,n,"%s",B):复制n-1个字符或者先遇到B结束,则结束复制,会在结束时复制结束符。 

memcpy:复制指定长度,不会自动添加结束符

2.越界判断

strcpy:不判断,需要用户自己处理

strncpy:根据输入长度判断

sprintf:不判断,需要用户自己处理

snprintf:根据输入长度判断

memcpy:更具输入长度判断

3.\0处理

strcpy:会以\0结束复制,并且复制\0到字符串中

strncpy:当遇到\0早于n个字节时,会复制\0到字符串中,否则不会

sprintf:和strcpy一样

snprintf:在strncpy的基础上,当被复制的字符串大于n-1时,则复制n-1个字符,且第n个字符复制\0

memcpy:没有\0处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值