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 に答える