字符串函数之长度受限制的字符串函数

第一个函数 - strncpy

函数原型 - char *strncpy( char *dest, const char *source, size_t count )

  1. const char *source是指我需要拷贝数据的地方,通俗地讲,就是说从source中将数据拿出来,由于source所维护的空间中的内容并不需要进行改变,所以加上const进行保护,更加安全。

  1. char *dest是指我需要将拷贝到的数据覆盖的地方,通俗地讲就是将从source中拿到的数据拷贝到dest所维护的空间中去。

  1. size_t count是一个无符号整数,在这里是指我需要从source所维护的空间中拿出count个字节大小的数据。

话不多说,来看图中代码

由图中代码和其运行结果可知

  1. strncpy函数会严格的按照代码所要求的字节数从source中拷贝到dest中去。

  1. strncpy函数与strcpy函数有所区别,strncpy只是会将数据拷贝过去,但并不会追加"\0"反之strcpy拷贝完成之后就会追加"\0",这也是strncpy的一个优点。

  1. strncpy的第三个参数size_t count是可以大于strlen(source)的,这中情况下,拷贝后的结果就是将dest中的内容全部变成了source总的内容,这是因为一旦strlen(source)不够count大小的时候,系统会自动在末尾天上"\0",直到补充后的字节数等于count的大小才结束。

第二个函数 - strncmp

特别注意:strncmp可用于比较两个字符串常量或比较数组和字符串常量,不能比较数字等其他形式的参数。

函数原型 - int strncmp(const char* str1, const char* str2, size_t num)

size_t num就是需要比较的

返 回 值:(与strcmp相同)str1 = str2 则返回0,

str1 > str2 则返回大于0的值,

str1 < str2 则返回小于0的值。

用法展示:

就我的这台机器而言,大于0的数就是1,小于0的数就是-1,至于具体是怎么比较字符大小的就要看每个字符对应的ASCLL码值了,在这里我同时给上ASCLL表,各位可以对照一下。

第三个函数 - strncat

函数原型 - char * strncat ( char * destination, const char * source, size_t num)

该函数的作用是追加一个字符串,即:将source所维护的字符串通过自己所给定的字符个数追加到dest所维护的字符串后面去。

如图所示,可以看到,两份代码给的第三个参数是不一样的,但是结果都是一样的,其实通过调试和监视的窗口我们就可以看见,所给参数num是可以大于strlen(source),发现不论num比strlen(source)大多少,最后都只会在追加后的字符串末尾添一个"\0"。注意,当num>strlen(source)时,strncpy函数会在末尾添加足够的"\0"使得最终的字节数等于num。当num>strlen(source)时,strncat只会在末尾添加一个"\0"。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值