현재 폴더에 있는 지정한 파일의 전체 경로(절대 경로)를 얻는 예제입니다.
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 |
문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.
제가 쓴 책도 한번 검토해보세요 ^^