문제

프로그램이 시작된 디렉토리를 가져와야하는 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에서 사용할 수 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top