Получение расширения файла в C - PullRequest
25 голосов
/ 15 марта 2011

Как получить расширение файла (например, .tiff) из имени файла в C?

Спасибо!

Ответы [ 3 ]

54 голосов
/ 15 марта 2011
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("..."));
15 голосов
/ 15 марта 2011

Найдите последнюю точку с помощью 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);
}
6 голосов
/ 15 марта 2011

Вы можете использовать функцию strrchr, которая ищет последнее вхождение символа в строке, чтобы найти последнюю точку.Оттуда вы можете считать остальную часть строки как расширение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...