你好,我希望有一些幫助,使一個c程序,查找目錄中的文件。它會將目錄和文件名稱作爲參數,並使用stat來獲取文件的屬性。我希望輸出顯示找到的文件的路徑以及其中包含文件名的其他路徑。在目錄樹中搜索一個文件
我已經看過dirent.h來訪問目錄,但我不太清楚如何正確使用它來查找它中的文件。
你好,我希望有一些幫助,使一個c程序,查找目錄中的文件。它會將目錄和文件名稱作爲參數,並使用stat來獲取文件的屬性。我希望輸出顯示找到的文件的路徑以及其中包含文件名的其他路徑。在目錄樹中搜索一個文件
我已經看過dirent.h來訪問目錄,但我不太清楚如何正確使用它來查找它中的文件。
char *FINDME=NULL;
int filter (const struct dirent *p)
{
int retval=0;
if (fnmatch(FINDME,p->d_name, 0)==0)
retval=1;
return retval;
}
// scandir.c
// scan the current directory "."
// usage ./scandir filename
// usage ./scandir 'filename*'
int
main(int argc, char **argv)
{
struct dirent **namelist;
int n=0;
FINDME=(argc>1)? argv[1] : "testfilename";
n = scandir(".", &namelist, filter, alphasort);
if (n < 0)
{
perror("scandir");
exit(1);
}
while (n--)
{
printf("%s\n", namelist[n]->d_name);
free(namelist[n]);
}
free(namelist);
}
你必須包括fnmatch.h
和dirent.h
再加上平時的頭文件。 允許使用像「*」這樣的「通配符」來選擇文件名。 alphasort()
按字母順序排列名稱,並且是POSIX系統的一部分。 FNDME是全局字符串,因爲回調函數過濾器不接受任何指向直接結構的指針。
哦,好的,謝謝 – MoistyTacos 2015-04-02 23:09:36
現在我該怎麼做,如果我輸入一個文件名出現在多個地方,它會打印出現的每個地方? – MoistyTacos 2015-04-02 23:24:22
而操作系統是什麼? – 2015-04-02 16:41:03
os是unix。 – MoistyTacos 2015-04-02 21:50:38