1

我正在使用 C 语言编写一个将参数作为输入的程序。是否可以检查您的 argv 是否包含特定的文件扩展名?就像检查 argv 中的任何 char* 是否以 .jpeg 或类似的东西结尾?(任何示例代码将不胜感激:))

4

2 回答 2

5

您可以查找最后一个.strrchr然后比较扩展名strcmp

int found = 0;
char *p = strrchr(argv[1], '.');
if (p)
    found = strcmp(p, ".jpeg") == 0;

或者,从字符串末尾取出扩展的长度并进行比较

const char *ext = ".jpeg";
size_t xlen = strlen(ext);
size_t slen = strlen(argv[1]);
int found = strcmp(argv[1] + slen - xlen, ext) == 0;

这也适用于.tar.gz.

于 2013-11-14T21:53:39.567 回答
1
bool ends_with(char const *str, char const *suffix)
{
    size_t l0 = strlen(str);
    size_t l1 = strlen(suffix);

    if (l0 < l1)
        return false;

    return strcmp(str + l0 - l1, suffix) == 0;
}

int main(int argc, char *argv[])
{
    int i;

    for (i = 1; i < argc; ++i) {
        if (ends_with(argv[i], ".jpeg"))
            do_something();
    }
}
于 2013-11-14T21:56:25.960 回答