strcpy函数_第二十八章、字符串处理函数-strcmp、strncmp、strcpy、strncpy

这一章我们来了解下另外几个字符串处理函数:

1. strcmp函数

strcmp用于比较两个字符串,它是将两个字符串自左向右逐个字符比较,一直到遇到0或不同的字符为止。

它的原型如下:int strcmp (const char *__s1, const char *__s2)它返回一个int类型的值

请看下面的例子:

ac6351ad5c44a27a92fa7320cb60b43a.png

从上面的例子我们可以看到,在比较的时候strcmp通过ascii来进行逐个比较,然后返回的值就是对应不同字符的ascii值相减,所以当前一个字符串比后一个字符串小时,返回负数,如果前一个字符串比后一个字符串大时返回正数,相同时返回0,。

这里需要注意它的大小比较在出现不同字符时就结束了,当有不同字符时,后面的字符并不会被比较。

2. strncmp函数

strncmp和strcmp函数一样也是比较两个字符串的大小,所不同的就是strncmp可以设定比较的长度,可以指定比较多少个字符停止。

它的原型是:int strncmp (const char *__s1, const char *__s2, size_t __n),也是返回一个int类型的值

我们来看一下下面的例子:

e1c5ea8e579c29a5965d629a88af6211.png

我们可以看到strcmp和strncmp两个函数,如果strncmp在指定长度内两个字符串有不同,那么其实并不影响结果,但是如果在指定长度内两个字符串刚好相同,那么strncmp就会返回0,认为是相同的。

3. strcpy函数

strcpy函数是复制一个字符串到目标字符串中。

它的原型为:char *strcpy (char *__restrict __dest, const char *__restrict __src),返回dest数组的首地址。

106fba329fbb30bfcd99cff85b1ffc96.png

这个当第二个字符串长度大于第一个字符串长度时,strcpy并不检查目标数组是否能存下,虽然也复制了过去,但是多余部分被写入了后面的地址,很有可能引起程序奔溃。

4. strncpy函数

上面我们说strcpy不检查目标数组是否能存下被复制数组,那么strncpy给了我们另一种复制字符串的形式,它可以指定最大复制长度。在复制中记得在目标数组中给 0 留个位置。

我们看一下原型:

har *strncpy (char *__restrict __dest,const char *__restrict __src, size_t __n),它同样返回目标字符串的地址,第三个参数规定了最大复制长度。

5f1a682767e1ef34d855450e362945de.png

这里也需要注意在复制的时候要给 0留个位置,要不然假如后面的一个数组正好相邻,就和我的例子里一样,那么同样会出现错误。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"C语言字符串处理库函数大全-简书"是一篇在简书上的教程,介绍了C语言中常用的字符串处理库函数。 该教程详细介绍了C语言中字符串操作的相关函数,包括库函数的使用方法和示例代码。通过该教程,读者可以学习到如何使用C语言中的字符串处理函数来进行字符串复制、连接、比较、查找、截取等操作。 在这篇教程中,读者可以了解到以下一些常见的字符串处理库函数: 1. strcpy:用于将一个字符串复制到另一个字符串中。 2. strcat:用于将一个字符串连接到另一个字符串的末尾。 3. strlen:用于计算一个字符串的长度。 4. strcmp:用于比较两个字符串大小。 5. strchr:用于在一个字符串中查找指定字符的第一次出现位置。 6. strstr:用于在一个字符串中查找指定子串的第一次出现位置。 7. strtok:用于将一个字符串按照指定的分隔符分割成多个子串。 8. strncpy:用于将指定长度的字符串复制到目标字符串中。 9. strncmp:用于比较指定长度的两个字符串。 10. sprintf:用于将格式化的字符串输出到一个字符数组中。 这些函数在C语言中非常常用,并且对于字符串的处理非常方便。通过学习和掌握这些字符串处理库函数,可以更加高效地完成C语言程序中的字符串操作。 总之,"C语言字符串处理库函数大全-简书"这篇文章提供了丰富的字符串处理库函数以及示例代码,对于C语言开发者来说是一个很好的参考和学习资料。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值