2013-11-14 103 views
1

我在使用参数作为输入的C程序工作。是否有可能检查你的argv是否包含特定的文件扩展名?就像检查argv中的任何char *是以.jpeg还是以类似的方式结束? (任何示例代码将不胜感激:))检查argv是否包含特定的文件扩展名

+2

让我们看看你已经尝试了什么,也许我们可以帮助。一个好的起点可能是'strrchr()'寻找''。''来找到可能的扩展的开始。 – Macattack

+0

我真的不知道从哪里开始,我试着设置一些分隔符,并将输入分割为'。'。 ,但这并没有解决,所以我用尽了想法,我无法在谷歌上找到任何明智的方式。 非常感谢@Olaf Dietsche提供了一个非常明确的解决方案 – Reaver

回答

3

你可以看一下在过去的.strrchr,然后比较了扩展与strcmp

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

这仅适用于分隔符不包含在子字符串中的情况。例如。它不能检测'“.tar.gz”' – ensc

0
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(); 
    } 
} 
相关问题