在C中获取文件扩展名

err*_*ler 30 c string file

如何.tiff从C中的文件名中获取文件扩展名(如)?

谢谢!

Thi*_*ter 58

const char *get_filename_ext(const char *filename) {
    const char *dot = strrchr(filename, '.');
    if(!dot || dot == filename) return "";
    return dot + 1;
}

printf("%s\n", get_filename_ext("test.tiff"));
printf("%s\n", get_filename_ext("test.blah.tiff"));
printf("%s\n", get_filename_ext("test."));
printf("%s\n", get_filename_ext("test"));
printf("%s\n", get_filename_ext("..."));
Run Code Online (Sandbox Code Playgroud)

  • 对于大多数实际用途,如果最后一个点是基本名称的第一个字符,则不应将其视为文件扩展名.例如在`〜/ .forward`中,".forward"不是扩展名. (6认同)
  • `#include <string.h>` (3认同)

pmg*_*pmg 16

找到最后一个点strrchr,然后前进1个字符

#include <stdio.h> /* printf */
#include <string.h> /* strrchr */

ext = strrchr(filename, '.');
if (!ext) {
    /* no extension */
} else {
    printf("extension is %s\n", ext + 1);
}
Run Code Online (Sandbox Code Playgroud)


tem*_*def 6

您可以使用该strrchr函数搜索字符串中最后一个字符,以查找最终的点.从那里,您可以读取字符串的其余部分作为扩展名.