POSIX或Linux API函数从路径获取文件扩展名

Vio*_*ffe 0 c++ linux posix

我需要一个POSIX或Linux API函数来获取文件路径并返回此文件的扩展名.每个平台都应该有一个,但我不能用于Linux.它叫什么?

R..*_*R.. 6

首先用于strrchr查找'.'路径名中的最后一个.如果它不存在,则没有"扩展".

接下来,strchr用来检查是否有'/'最后一个'.'.如果是这样,最后一个'.'是在目录组件中,而不是文件名,所以没有扩展名.

否则,您找到了扩展名.您可以将指针'.'直接用作直接作为C字符串的位置.除非原始字符串在使用之前被释放或破坏,否则无需将其复制到新存储.

注意:以上假设您将"extension"定义为最终定'.'界组件.如果你要考虑的事情一样.tar.gz,并.cpp.bak作为扩展,一个稍微不同的方式工作:

首先,strrchr用来找到决赛'/'.如果未找到,请将字符串的开头视为结果.

其次,用你从刚找到的位置开始strchr找到第一个'.'.结果是您的扩展.

  • 任何以只读方式使用的函数都没有"不安全".此外,OP在C和C++中都标记了这个问题,因此在任何一种语言中都能使用的答案是唯一合适的答案. (2认同)