标签: strrchr

为什么strrchr()返回`char*`而不是`const char*`?

该函数char* strrchr(const char *str, int ch)返回()中最后一次出现的指针(char*).strconst char *ch

所以我们可以编写以下代码而不需要任何转换:

#include <string.h>
int main()
{
    const char CONSTSTR[] = "foo/bar/foobar.txt";
    char *ptr = strrchr (CONSTSTR, '/');
    *ptr++ = 'B';
    *ptr++ = 'A';
    *ptr++ = 'D';
}
Run Code Online (Sandbox Code Playgroud)

返回的优势char*const char*什么?

编辑:
正如Shafik Yaghmour指出的那样,strchr实现如何工作有很好的答案

由于我的代码是在C++中,我将使用<cstring>而不是<string.h>.谢谢你的回答;-)

然而,Mike Seymour的答案最适合这个问题.我甚至在下面添加了一个更详细的答案,清楚地说strrchr()是一个C函数(不允许重载),声明适合const非const字符串.因为strrchr()可以使用非const字符串调用,所以返回的字符串也应该是非const …

c++ null-terminated const-string strrchr

6
推荐指数
2
解决办法
1920
查看次数

了解strrchr功能

我正在使用函数strrchr进行一些测试,但我无法理解输出:

$text = 'This is my code';
echo strrchr($text, 'my');
//my code
Run Code Online (Sandbox Code Playgroud)

好的,该函数在最后一次出现之前返回了字符串

$text = 'This is a test to test code';
echo strrchr($text, 'test');
//t code
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,为什么函数返回"t代码",而不是"测试代码"?

谢谢

php string strrchr

6
推荐指数
1
解决办法
969
查看次数

找到最后一个char出现的最有效方法

考虑一下我快速编写的这个函数来查找字符串中给定char的最后一次出现,并返回它在字符数组中的位置,该字符在物理上是字符串:

size_t strlstchar(const char *str, const char ch)
{
    char *chptr = strrchr(str, ch);
    return chptr - str;
}
Run Code Online (Sandbox Code Playgroud)

我只是在这里快速输入这个(没有编译或任何),因为我对一些事情有疑问.

对我来说,这似乎是找到哪个数组元素保存特定char的最后一个实例的最简单的解决方案,但我不知道它是如何工作的.我刚刚根据strrchr的文档做了这个,所以它在技术上是strrchr完成所有的工作.我无法想象这是实现这一目标的最佳方式(在性能方面),并且希望有人可以提供一些关于最佳方法的信息.

strrchr是一种有效的方法吗?或者strrchr最好留给其他一些用途?

c performance strrchr

5
推荐指数
1
解决办法
8378
查看次数

STRCHR与STRRCHR的区别?

我想知道两种不同用途之间的区别.我相信一些非常微妙的区别.

这是IBM参考手册中的解释.不过也许我的英语很糟糕,我无法想象其中的差异.

也许向我展示两种情况的例子可以帮助我更好地理解这一点.

以下是IBM的解释:

strchr子例程返回一个指针,该指针指向由String参数指向的字符串中的Character (转换为无符号字符)参数指定的第一个字符.如果字符串中没有出现该字符,则返回空指针.终止字符串的空字节被视为字符串的一部分.

strrchr子例程返回一个指针,该指针指向由String参数指向的字符串中的Character (转换为字符)参数指定的最后一个字符.如果字符串中没有出现该字符,则返回空指针.终止字符串的空字节被视为字符串的一部分.

php string strchr strrchr

3
推荐指数
2
解决办法
7795
查看次数

标签 统计

strrchr ×4

php ×2

string ×2

c ×1

c++ ×1

const-string ×1

null-terminated ×1

performance ×1

strchr ×1