Yahoo 知識+ 將於 2021 年 5 月 4 日 (美國東岸時間) 停止服務,而 Yahoo 知識+ 網站現已轉為僅限瀏覽模式。其他 Yahoo 資產或服務,或你的 Yahoo 帳戶將不會有任何變更。你可以在此服務中心網頁進一步了解 Yahoo 知識+ 停止服務的事宜,以及了解如何下載你的資料。

如何從完整路徑找檔案名稱?(Win32API, C&C++)

請問各位:

讓使用者透過OPENFILENAME以及GetOpenFileName函數

輸入一個完整的檔案路徑,例如:

C:\Documents and Settings\User\桌面\成功.txt

該如何取得最後檔名「成功.txt」?

因為「功」字當中有 \ 符號,所以無法純用strtok

大大有無另外解決之道?或Win32API中有提供這功能所需的函數?

感謝!

2 個解答

評分
  • ?
    Lv 4
    9 年前
    最愛解答

    我在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...

    資料來源: 自己
  • Heresy
    Lv 7
    9 年前

    Heresy 不是用 WinAPI,而是用 Boost 的 File System

    http://kheresy.wordpress.com/2010/10/25/boost_file...

    或許可以參考看看

還有問題嗎?立即提問即可得到解答。