파일 상대경로로부터 절대경로 얻기

mhComa·2021년 3월 6일
0

Windows

저는 TDM-GCC(MinGW-w64)를 사용하고 있습니다.

char *_fullpath(char *absPath, const char *relPath, size_t maxLength);
wchar_t *_wfullpath(wchar_t *absPath, const wchar_t *relPath, size_t maxLength);

성공할 경우 반환값은 절대 경로 이름의 포인터(absPath)이다. 오류가 발생하면 NULL을 반환한다.

  • absPath
    파일의 변환된 절대 경로가 저장될 포인터이다.
    NULL일 경우, 결과를 자동으로 동적 할당한다. 이 경우 수동으로 해제해줘야 한다.
  • relPath
    변환할 경로 문자열이다. 잘못된 형식일 경우 함수는 NULL을 반환하여 오류임을 알린다.
  • maxLength
    절대 경로의 최대 길이이다. absPath가 이 값을 초과하면 NULL을 반환하여 오류임을 알린다.

윈도에서 경로 최대 길이는 MAX_PATH 매크로로 정의되어있으며 값은 260이다.
MinGW를 사용할 경우 limits.h에서 PATH_MAX를 사용할 수 있다. 값은 동일하다.

동적 할당하지 않을 경우 충분한 크기의 배열을 만들어둬야 한다.

Linux

저는 Ubuntu 20.04에서 GCC를 사용하고 있습니다.

char *realpath(const char *path, char *resolved_path);

성공할 경우 반환값은 절대 경로 이름의 포인터(resolved_path)이다. 오류가 발생하면 NULL을 반환한다.

  • path
    변환할 경로 문자열이다. 잘못된 형식일 경우 다양한 errno와 함께 NULL을 반환한다.
  • resolved_path
    파일의 변환된 절대 경로가 저장될 포인터이다. NULL일 경우, 결과를 자동으로 동적 할당한다. 이 경우 수동으로 해제해줘야 한다.

리눅스에서 경로 최대 길이는PATH_MAX 매크로로 linux/limits.h에 정의되어 있다.

마찬가지로 동적 할당하지 않을 경우 충분한 크기의 배열을 만들어둬야 한다.

profile
Ich bin ein Hund!

0개의 댓글