【求助】用C打开文件的操作,请达人帮忙,多谢!
用C打开文件时,如果不确定文件名,可确定是txt格式的,如何实现,谢谢!
//-------------------------------------- // 程序功能:調用Win32功能用通配符查找一批文件的文件名 // 說明:1.採用DOS通配符,即包含*和?號的文件,比如*.c是所有以.c為擴展名的文件,可帶路徑 // 2.用命令行指定文件樣式,若省略,默認為*.* // 3.默認將結果輸出到控制臺,若用重定向,可輸出到文本文件,語法類如為test *.c > list.txt,即寫到list.txt上 // 4.獲得文件清單,可用數組循環處理(本例是寫到標準容器vector中,相當於文件名數組) // 5.要獲取文件的其他屬性,可查閱MSDN中WIN32_FIND_DATA結構的內容 // 6.本程序使用寬字符以及安全版本的函數,然而用重定向輸出得到的文本文件是可以用Ansi模式讀入的 //-------------------------------------- #include <Windows.h> #include <stdio.h> #include <string.h> #include <vector> BOOL GetFileList(const wchar_t FileName[], std::vector<WIN32_FIND_DATAW>& FileList); int wmain(int argc, wchar_t* argv[]) { wchar_t FileName[FILENAME_MAX]; wcscpy_s(FileName, FILENAME_MAX - 1, (argc < 2) ? L"*.*" : argv[1]); std::vector<WIN32_FIND_DATAW> FileList; FileList.clear(); // 清空集合,如果需要追加模式,重覆調用GetFileList()函數而不要再清空 if (GetFileList(FileName, FileList)) { for (std::vector<std::wstring>::size_type index = 0; index != FileList.size(); ++index) { _putws(FileList[index].cFileName); } } return 0; } // 獲取文件清單 // 備註:結果通過集合FileList返回,傳遞的是引用 BOOL GetFileList(const wchar_t FileName[], std::vector<WIN32_FIND_DATAW>& FileList) { WIN32_FIND_DATAW FindFileData; // 文件數據結構,類型聲明末尾為W表示是寬字符版本,若為A則是Ansi版本的 HANDLE Handle; // 用於搜索文件的句柄,將此句柄供給FindNextFile()函數,文件信息儲存在上面結構中 Handle = FindFirstFileW(FileName, &FindFileData); if (Handle != INVALID_HANDLE_VALUE) { do { FileList.push_back(FindFileData); } while (FindNextFileW(Handle, &FindFileData)); return true; } else return false; }