【发布时间】:2012-08-28 20:30:45
【问题描述】:
考虑一下我写的这个函数,它可以快速找到给定字符在字符串中的最后一次出现,并返回它在物理上是字符串的字符数组中的位置:
size_t strlstchar(const char *str, const char ch)
{
char *chptr = strrchr(str, ch);
return chptr - str;
}
我只是在这里快速输入了这个(尚未编译或尚未编译),只是因为我对一些事情有疑问。
对我来说,这似乎是查找哪个数组元素包含特定字符的最后一个实例的最简单解决方案,但我不知道它是如何工作的。我只是按照 strrchr 的文档制作的,所以从技术上讲,它是 strrchr 完成所有工作。我只是无法想象这是实现这一目标的最佳方式(就性能而言),并希望有人可以就什么是实现这一目标的最佳方式提供一些意见。
strrchr 是一种有效的方法吗?还是 strrchr 最好留作其他用途?
【问题讨论】:
-
strrchr 可以返回 NULL,从而使您的函数的结果在找不到字符时难以预测。通常“-str”可以看作是一个随机数,然后转换为size_t,你怎么知道你没有找到char?
标签: c performance strrchr