有一个 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/