在C语言中,如何从文件名中获取文件扩展名(如.tiff)?谢谢!
.tiff
dwthyt8l1#
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("..."));
rggaifut2#
用strrchr找到最后一个点,然后前进1个字符
strrchr
#include <stdio.h> /* printf */ #include <string.h> /* strrchr */ ext = strrchr(filename, '.'); if (!ext) { /* no extension */ } else { printf("extension is %s\n", ext + 1); }
j5fpnvbx3#
你可以使用strrchr函数来查找字符串中最后一个出现的字符,从而找到最后一个点,然后你可以读取字符串的其余部分作为扩展名。
bzzcjhmw4#
下面是一个同样适用于文件(或目录)* 路径 * 的版本:
#include <assert.h> #include <string.h> const char *FileSuffix(const char path[]) { const char *result; int i, n; assert(path != NULL); n = strlen(path); i = n - 1; while ((i >= 0) && (path[i] != '.') && (path[i] != '/') && (path[i] != '\\')) { i--; } if ((i > 0) && (path[i] == '.') && (path[i - 1] != '/') && (path[i - 1] != '\\')) { result = path + i; } else { result = path + n; } return result; } int main(void) { assert(strcmp(FileSuffix("foo/bar.baz.qux"), ".qux") == 0); assert(strcmp(FileSuffix("foo.bar.baz/qux"), "") == 0); return 0; }
4条答案
按热度按时间dwthyt8l1#
rggaifut2#
用
strrchr
找到最后一个点,然后前进1个字符j5fpnvbx3#
你可以使用
strrchr
函数来查找字符串中最后一个出现的字符,从而找到最后一个点,然后你可以读取字符串的其余部分作为扩展名。bzzcjhmw4#
下面是一个同样适用于文件(或目录)* 路径 * 的版本: