2013-11-14 140 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(); 
    } 
} 
相關問題