【问题标题】:Does strlen() always correctly report the number of char's in a pointer initialized string?strlen() 是否总是正确报告指针初始化字符串中的字符数?
【发布时间】:2015-06-23 09:26:28
【问题描述】:

只要我使用char 而不是某些wchar_t 类型来声明一个字符串,strlen() 就会正确报告字符串中chars 的数量,或者我需要一些非常具体的情况意识到?这是一个例子:

char *something = "Report all my chars, please!";
strlen(something);

【问题讨论】:

  • 注意非空终止字符串...(参见stackoverflow.com/questions/631516/…
  • "This would \0 go wrong"
  • @G.Rassovsky:那不会是“字符串”吧。
  • 这闻起来像XY problem。您是否在调试某些问题并怀疑strlen 无法正常运行?
  • @FrerichRaabe,没有。 :) 使用strlen() 的程序做得很完美。我只是想抓住任何可能的极端情况。

标签: c strlen


【解决方案1】:

strlen 所做的基本上是计算所有字节,直到它达到零字节,即所谓的空终止符,字符 '\0'

所以只要字符串在为字符串分配的内存范围内包含终止符,strlen 就会正确返回字符串中char 的数量。

请注意,strlen 无法计算多字节编码字符串(如 UTF-8)中的字符数(代码点)。但它会正确返回字符串中的字节数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-12
    • 2021-03-09
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    相关资源
    最近更新 更多