为什么没有strnchr功能?

Tho*_*son 20 c

作为其他C库函数,比如strcpy,strcat有一个版本限制了字符串(strncpy等等)的大小,我想知道为什么没有这样的变体strchr

Sor*_*ren 19

它确实存在 - 它被称为memchr:

http://en.wikipedia.org/wiki/C_string_handling

  • 所以`#define strnchr(haystack,needle,length)memchr(haystack,needle,strnlen(haystack,length))`应该这样做,对吗? (7认同)
  • 请注意,`memchr`并非*可能会很像`strnchr`可能做的那样,因为`memchr`如果比`n`参数短就不会在字符串末尾停止(即它可以读取超出字节数的字节)。 \ 0,与strchr不同)。相当于“ memchr”的“ n少”不是strchr,而是rawmemchr,它是不是POSIX或C99的GNU扩展。 (5认同)

Ker*_* SB 8

在C中,术语"字符串"通常表示"空终止的字符数组",并且str*函数对这些类型的字符串进行操作.该n在你提到的功能主要是为控制的缘故输出.

如果要在没有任何隐含终止语义的情况下对任意字节序列进行操作,请使用mem*函数族; 在您的情况下memchr应该满足您的需求.