Yahoo 知識+ 將於 2021 年 5 月 4 日 (美國東岸時間) 停止服務,而 Yahoo 知識+ 網站現已轉為僅限瀏覽模式。其他 Yahoo 資產或服務,或你的 Yahoo 帳戶將不會有任何變更。你可以在此服務中心網頁進一步了解 Yahoo 知識+ 停止服務的事宜,以及了解如何下載你的資料。
如何從完整路徑找檔案名稱?(Win32API, C&C++)
請問各位:
讓使用者透過OPENFILENAME以及GetOpenFileName函數
輸入一個完整的檔案路徑,例如:
C:\Documents and Settings\User\桌面\成功.txt
該如何取得最後檔名「成功.txt」?
因為「功」字當中有 \ 符號,所以無法純用strtok
大大有無另外解決之道?或Win32API中有提供這功能所需的函數?
感謝!
2 個解答
- ?Lv 49 年前最愛解答
我在console 實作 記得去link lib
#include<stdio.h>
#include <stdlib.h>
#include <windows.h>TCHARszFile[MAX_PATH];
TCHAR szFileTitle[MAX_PATH];int main(void)
{
OPENFILENAME ofn;
memset(&ofn, 0, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = NULL; //母視窗代碼
ofn.lpstrFilter = TEXT("text(*.txt)\0*.txt\0Allfiles(*.*)\0*.*\0\0");
ofn.lpstrFile = szFile;
ofn.lpstrFileTitle = szFileTitle;
ofn.nMaxFile = MAX_PATH;
ofn.nMaxFileTitle = MAX_PATH;
ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
ofn.lpstrDefExt = TEXT("txt"); //預設附檔名
ofn.lpstrTitle = TEXT("我的開檔"); //標題
if(GetOpenFileName(&ofn) == 0)
return -1;printf("%s\n%s",szFile,szFileTitle);system("pause");
return 0;
}
圖片參考:http://imgcld.yimg.com/8/n/AB06902877/o/1511123114...
資料來源: 自己 - HeresyLv 79 年前
Heresy 不是用 WinAPI,而是用 Boost 的 File System
http://kheresy.wordpress.com/2010/10/25/boost_file...
或許可以參考看看