2012-02-02 36 views
0

你好有一個我想問一個關於文件打開的問題。我想寫一個程序,在其中我將給出一個路徑到我的主文件夾.main文件夾可以包含文件和其他文件夾再次包含其他文件夾和文件。我想要打開循環中的所有文件,並對它們進行一些操作,我也只想打開特定的文件,例如.c擴展文件。是否有內置程序或函數可以做到這一點?或者至少是有辦法通過它我可以檢查我不知道哪些文件是存在的文件夾中,這樣我可以反覆打開它們使用C編程打開不同的文件

我用C編程的Linux 感謝

+1

GNU Simple Directory Lister:http://www.gnu.org/software/libc/manual/html_node/Simple-Directory-Lister.html – 2012-02-02 07:51:30

+0

如何使用命令['find'](http:// linux。 die.net/man/1/find)? – 2012-02-02 07:54:49

+0

@AlexReynolds非常感謝,但有沒有辦法列出所有的文件,即目錄內的文件等。謝謝 – mainajaved 2012-02-02 08:04:57

回答

2

你可以節省很多工作,看看ftw() and nftw()。他們將遍歷目錄及其條目,從您提供的路徑開始,並調用您提供的回調函數。在您的回調中,您可以檢查文件是否與用途相關,如果是,則在其上進行操作。

另外glob()會節省你一些努力,如果你要做大量的文件名匹配。

+0

非常感謝,真的幫了我很多 – mainajaved 2012-02-02 10:28:06

1

任何內置功能爲你想在這裏做什麼。但是你可以使用dirent.h

int main(){ 
    DIR *dir; 
    struct dirent *ent; 
    dir = opendir ("c:\\folder\\"); 
    if (dir != NULL) { 

    /* print all the files and directories within directory */ 
    while ((ent = readdir (dir)) != NULL) { 
     printf ("%s\n", ent->d_name); 
    } 
    closedir (dir); 
    } else { 
    /* could not open directory */ 
    perror (""); 
    return EXIT_FAILURE; 
    } 
} 

Here你可以找到更多的例子。

+0

非常感謝您的幫助 – mainajaved 2012-02-02 10:40:51

0

opendir,readdir,closedir
if dirent->d_type==DT_DIR,進入它(遞歸會有所幫助)。
看看文件名,找出你是否感興趣。

+0

非常感謝幫助 – mainajaved 2012-02-02 10:27:35