반응형

현재 폴더에 있는 지정한 파일의 전체 경로(절대 경로)를 얻는 예제입니다. 



2021. 1. 14  최초작성

 



아래 링크에서 발견한 코드를 MinGW로 테스트하니 문제 없었지만.


https://stackoverflow.com/a/17632322



#include <stdio.h>
#include <windows.h>

int main()
{
    char path[] = "get_filepath.cpp";
    char *filename;
    char fullpath[256];

    GetFullPathName(path, 256, fullpath, &filename); // linux realpath

    printf("Full path: %s\nFilename: %s\n", fullpath, filename);
    return 0;
}




Visual Studio 2019에서 실행시켜 보니 에러가 발생하여 수정하면서 Linux에서도 똑같은 결과를 내놓도록 추가했습니다. 


#include <stdio.h>

#ifdef _MSC_VER

#include <windows.h>
#include <atlconv.h>

#else

#include <limits.h>
#include <stdlib.h>

#endif

int main()
{
    const char* path = "get_filepath.cpp";

#ifdef _MSC_VER

    USES_CONVERSION;
    wchar_t* _path = A2W(path);
    wchar_t* _filename;
    wchar_t _fullpath[MAX_PATH];

    GetFullPathName(_path, 256, _fullpath, &_filename);

    char* filename = W2A(_filename);
    char* fullpath = W2A(_fullpath);
   
    printf("Full path: %s\nFilename: %s\n", fullpath, filename);
#else
    char fullpath[PATH_MAX];
    realpath(path, fullpath);

    printf("Full path: %s\n", fullpath);
#endif



    return 0;
}




Windows 실행결과


Full path: C:\Users\webnautes\source\repos\console_test_PROJECT\console_test_PROJECT\get_filepath.cpp
Filename: get_filepath.cpp



Linux 실행결과


webnautes@webnautes-pc:~$ ./a.out
Full path: /home/webnautes/get_filepath.cpp







반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts