用C语言获取文件扩展名

假设有一个名为12345.jpg的文件。 在C中,如何获取文件扩展名以便与某些文件扩展名进行比较? 如果有任何内置function,请告诉我。

这样做的function,以及测试工具:

#include  #include  const char *getExt (const char *fspec) { char *e = strrchr (fspec, '.'); if (e == NULL) e = ""; // fast method, could also use &(fspec[strlen(fspec)]). return e; } int main (int argc, char *argv[]) { int i; for (i = 1; i < argc; i++) { printf ("[%s] - > [%s]\n", argv[i], getExt (argv[i])); } return 0; } 

运行此:

 ./program abc abc. abc.1 .xyz abc.def abc.def.ghi 

给你:

 [abc] - > [] [abc.] - > [.] [abc.1] - > [.1] [.xyz] - > [.xyz] [abc.def] - > [.def] [abc.def.ghi] - > [.ghi] 

大概:

 #include  char *extn = strrchr(filename, '.'); 

这将为您提供指向扩展周期的指针,如果没有扩展名则为空指针。 您可能需要做更多的尽职调查,以确保点之后没有斜线,等等。

有一个便携式CRT解决方案: _splitpath 。

在windows中还有一个名为PathGetExtension的未记录的shell32 API,但这在许多方面都是邪恶的,我可能不应该注意到这一点。

使用strchr第一个数组成员将为您提供文件名第二个数组成员将为您提供扩展名