gpt4 book ai didi

c++ - strnlen 的真正用途是什么?

转载 作者:行者123 更新时间:2023-11-30 18:16:28 25 4
gpt4 key购买 nike

我不明白strnlen()的真正用途是什么。任何人都可以让我知道实际用途或指出我可以找到真正用途的链接吗?

最佳答案

strnlen 有两个主要用途:

  1. 您的输入是一个字符数组,如果其内容填充整个数组,并且您想要确定“字符串”(不是 C 字符串)的长度,则该数组可能不是以 null 结尾的。

  2. 接口(interface)契约保证您的输入是有效的 C 字符串,但对大小没有限制,并且您希望对大小施加限制,而不消耗不成比例的处理资源来计算大小以进行检查超出你的极限。

在我看来,情况 1 不太有趣,因为通常只需将缓冲区增大一个字节并始终在最后一个字节中存储终止符即可处理它。案例2更有趣。例如,如果您的函数以以下内容开头:

if (strlen(input) >= 256) return error_code;

如果有人将 100GB 字符串作为输入传递,则可能需要很多秒(甚至几分钟)才能返回错误,尽管事实上在读取前 256 个字节后就已经知道会发生错误应该被退回。另一方面,如果你写:

if (strnlen(input, 256) >= 256) return error_code;

那么函数总是可以快速返回。请注意,这种转换实际上可以由编译器自动应用;将来,如果运气好的话,可能会是这样。

关于c++ - strnlen 的真正用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26349367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com