c - 为什么没有 strnspn() 或 strncspn()?

标签 c cstring libc

有一个 strnlen() 函数已经添加到各种知名库中一段时间​​了,随后进入了标准,如 POSIX-1:2008 . IIUC 其目的是避免在主题字符串未以 nul 结尾时出现问题。

但是,我没有看到类似的变体 strnspn()strncspn() 被开发出来,尽管可能存在类似的潜在问题。是否只是因为基础 strspn()strcspn() 超出了许多 C 程序员的理解范围,因此应该未使用或无法使用?

人们可能会注意到,在(著名的)“增强安全性”(又名附件 K 或 M 的扩展名) 字符串函数的变体中,没有 strcspn_s() 也不是 strspn_s() ...

最佳答案

为什么特定函数没有出现在标准库中的答案通常归结为“没有足够多的人说他们需要它来证明强制每个实现都提供它是合理的,如果你确实需要它,你总是可以自己编写或使用已发布的众多版本之一。”

他们无法添加所有内容。在某些时候,会做出关于从何处切断的武断决定。

关于c - 为什么没有 strnspn() 或 strncspn()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22001601/

相关文章:

C 表达式必须具有指向结构或 union 类型的指针

c# - 从 c# 调用的非托管 c++ dll,在 dll 中使用 CString 时崩溃

c - 从路径中删除字符 (cstring)

c - 术语 "libc"等同于 "C standard library"吗?

c - 通过 fork 减轻内存泄漏

C 程序不从命令行读取 .dat 文件

c - 如何使用 c 中的 write() 函数将整数 var 写入文件

c++ - 在 MFC 计算器应用程序中连接 CString 时遇到问题

rust - 为什么 `CMSG_SPACE` 在 Rust 中不是常量函数?

regex - 像 "regexec"这样的正则表达式函数在 libc 版本 2.2.5 中是线程安全的吗?