首页 > 解决方案 > 为什么 strlcat 和 strlcpy 是 unsigned int 而不是 void?

问题描述

我不明白为什么我们必须返回一个unsigned intforstrlcatstrlcpy,为什么我们需要它?这不是该功能的目的。

感谢您的回复

标签: cstringstrlcpy

解决方案


这些函数的目的是移动字符串(以某种方式),当你这样做时,程序员一个非常常见的问题是“移动了多少个字符?”。

由于它已经知道这些信息,因此它不再需要返回此信息。否则,程序员将不得不在之前和/或之后做一些昂贵的 strlen()。

此外,如果它们由于缓冲区太小而失败,它们会为您提供所需的字符数,因此您可以检测到截断,并可能重新分配缓冲区。


推荐阅读