2011-03-15 186 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