2014-09-24 49 views
0

我是C上的一名新手,現在我想用C來完成通配符功能。例如,我編寫了一個名爲myphoto的照片處理程序,我想這樣使用它:myphoto ./photos/*.png,然後myphoto會逐個處理目錄中的所有png文件。如何用C完成通配符功能?

我想盡可能方便地解決這個問題,沒有正則表達式的用法,我想出了一個主意,也許我可以用EXEC函數來執行命令,但EXEC函數只返回int,而不是char *。

那麼我該如何解決這個問題呢?謝謝!

+1

你需要什麼都不做。甚至在程序啓動之前,shell將擴展通配符(globing表達式)。 – 5gon12eder 2014-09-24 14:04:51

+0

您是否嘗試過編寫該程序並在argc和argv中打印值? – 2014-09-24 14:06:22

回答

3

它是特定於操作系統的。我給了Posix和Linux的觀點(在Windows上它是不同的,我不知道它)。

請注意,如果你正在寫的程序myprog.c編譯成myprog然後運行 myprog photos/*.pngmyprog.cmain功能越來越字符串數組(聲明int main(int argc, char**argv)隨後的參數數組在陣列argcargv ....) 。擴展由之前的開始您的myprog二進制可執行文件完成。見execve(2)

在Linux和POSIX系統:讀glob(7),您可能需要使用glob(3)和/或fnmatch(3)和/或wordexp(3)。如果某些數據(例如文件中的一行)包含photos/*.jpeg,並且程序想要「遍歷」這些功能,則這些功能通常很有用。您不需要「glob」參數main,這已經由您的shell完成了。

閱讀Advanced Linux Programming

+0

哦,我剛剛寫了一個簡短的程序來試試你想說的,現在我發現shell有多強大,非常感謝! – 2014-09-25 12:30:35