2011-03-15 151 views
19

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

谢谢!

+0

[C语言入门文件扩展名]的可能的复制(http://stackoverflow.com/questions/3035225/getting-文件扩展名为c语言) – nibot 2017-03-04 18:15:30

回答

48
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("...")); 
+0

'dot = strrchr(filename,'。');','dot!= NULL'后暗示'* dot =='。''因此您的测试应该简单'如果(点)'。 – 2011-03-15 09:07:00

+0

我收到一个错误:'renamer.c:11:警告:不兼容隐式声明的内置函数'strrchr'' – errorhandler 2011-03-15 09:08:57

+1

'#include ' – ThiefMaster 2011-03-15 09:10:17

6

您可以使用strrchr函数搜索字符串中最后一次出现的字符,以找到最终的点。从那里,你可以读取字符串的其余部分作为扩展名。

13

查找与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); 
} 
+0

没有必要复制它 - 您将返回一部分以原始字符串结尾的字符串,因此不需要进行任何修改。 – ThiefMaster 2011-03-15 09:11:14

+0

复制删除,谢谢 – pmg 2011-03-15 09:13:30