Windows 下無標準 C 庫直接讀取目錄,可借助 system() 執行 DIR 命令導出文件列表到臨時文件,再用 fgets() 逐行讀取。
| 命令 | 作用 |
|---|---|
DIR | 顯示目錄詳細信息 |
DIR /B | 僅顯示純文件名(無摘要) |
DIR /B >> file.txt | 追加輸出到文件 |
DEL /Q file.txt | 靜默刪除文件 |
#include
#include
int main() {
FILE *fp = NULL;
char save[100] = {0};
// 導出 E:\Ock\DirSave 下文件名到 D:\buf.Ock
system("dir /b E:\\Ock\\DirSave >> D:\\buf.Ock");
fp = fopen("D:\\buf.Ock", "rb");
if (fp) {
while (!feof(fp)) {
fgets(save, sizeof(save), fp); // 循環讀取,最後留下最終行
}
fclose(fp);
}
// 清理臨時文件
system("del /Q D:\\buf.Ock");
puts(save); // 輸出最後一個文件名
return 0;
}
可從 main(int argc, char **argv) 的 argv[0] 獲取程式所在路徑,自行截取目錄部分:
int main(int argc, char **argv) {
puts(argv[0]); // 完整程式路徑
return 0;
}

opendir/readdir (POSIX)。system() 存在命令注入風險,路徑含空格需加引號。FindFirstFile/FindNextFile)。tmpnam() 或 GetTempFileName() 生成唯一名。利用 system("DIR /B ...") 配合 fgets() 可快速原型實現目錄遍歷,但生產代碼建議使用平台原生目錄 API 以獲得更好性能、安全性與可移植性。