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