C 프로그램에서 현재 디렉토리를 얻는 방법은 무엇입니까?
-
08-07-2019 - |
문제
프로그램이 시작된 디렉토리를 가져와야하는 C 프로그램을 만들고 있습니다. 이 프로그램은 UNIX 컴퓨터 용으로 작성되었습니다. 나는보고 있었다 opendir()
그리고 telldir()
, 하지만 telldir()
반환 a off_t (long int)
, 정말 도움이되지 않습니다.
문자열 (char 어레이)에서 현재 경로를 어떻게 얻을 수 있습니까?
해결책
당신은 보았습니까? getcwd()
?
#include <unistd.h>
char *getcwd(char *buf, size_t size);
Simple example:
#include <unistd.h>
#include <stdio.h>
#include <limits.h>
int main() {
char cwd[PATH_MAX];
if (getcwd(cwd, sizeof(cwd)) != NULL) {
printf("Current working dir: %s\n", cwd);
} else {
perror("getcwd() error");
return 1;
}
return 0;
}
다른 팁
Man Page를 찾으십시오 getcwd
.
질문은 UNIX로 표시되어 있지만 사람들은 대상 플랫폼이 Windows 일 때 방문 할 수 있고 Windows의 답은 다음과 같습니다. GetCurrentDirectory()
기능:
DWORD WINAPI GetCurrentDirectory(
_In_ DWORD nBufferLength,
_Out_ LPTSTR lpBuffer
);
이 답변은 C 및 C ++ 코드 모두에 적용됩니다.
제안 된 링크 사용자 4581301 안에 논평 또 다른 질문에, Google 검색 사이트를 사용하여 현재 최상위 선택으로 확인했습니다 : microsoft.com getCurrentDirectory '.
#include <stdio.h> /* defines FILENAME_MAX */
//#define WINDOWS /* uncomment this line to use it for windows.*/
#ifdef WINDOWS
#include <direct.h>
#define GetCurrentDir _getcwd
#else
#include <unistd.h>
#define GetCurrentDir getcwd
#endif
int main(){
char buff[FILENAME_MAX];
GetCurrentDir( buff, FILENAME_MAX );
printf("Current working dir: %s\n", buff);
return 1;
}
주목하십시오 getcwd(3)
Microsoft의 LIBC에서도 제공됩니다. getcwd (3), 그리고 당신이 기대하는 것과 같은 방식으로 작동합니다.
링크해야합니다 -loldnames
(대부분의 경우 자동으로 수행되는 oldnames.lib) 또는 사용 _getcwd()
. 회복되지 않은 버전은 Windows Rt에서 사용할 수 없습니다.
제휴하지 않습니다 StackOverflow