strn系列函数

前面介绍的strcpy,strcat,strcmp均为作用长度不受长制的字符串函数。此处的长度不受限制与strn系列函数的作用长度受限制相对应,下面我们就来介绍strn系列函数——strncpy,strncat,strncmp。
下面我们解释为什么说这三个函数作用长度受限制。
以strncpy为例,其声明为char *strncpy( char *strDest, const char *strSource, size_t count );相较于strcpy多了一个长度参数即size_t count
(size_t类型反映数据类型大小,数据不存在负数,相当于unsigned+数据类型),这个参数的作用限制了函数作用于字符串的长度,因此相对于strcpy函数,它更加安全,不容易出bug。加上这个参数后新函数的作用效果就发生了改变,举个例子。

int main()
{
   
	char* str1 = "abcd";
	char* str2 = "abe";
	strncmp(str1,str2,2);
	return 0;
}

这个函数作用效果就是将str2的前两个字符依次拷贝到str1的对应位置。
总结来说,这个函数的作用效果就是将str2的前count个字符拷贝到str1的相应位置。
那么这时候问题又来了,假设str2足够长,如果str1长度小于count,会出现什么样的情况呢?
这个问题我们之前在介绍strcpy的时候已经讨论过,这个时候会出现溢出现象,str2的前count个元素会拷贝到str1里面去,但系统会报错。
那如果str1足够长,str2长度小于count呢?假设str2的长度是n,答案是前n个元素照旧拷贝,从第n+1个元素开始我们将’\0’拷贝进str1的对应位置上。
注:strcpy要求dest对应字符串长度要大于

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值