C 프로그램에서 현재 디렉토리를 가져오려면 어떻게 해야 합니까?
나는 프로그램이 시작되는 디렉토리를 얻을 필요가 있는 C 프로그램을 만들고 있다.이 프로그램은 UNIX 컴퓨터용으로 작성되었습니다.계속 보고 있었어요opendir()
그리고.telldir()
,그렇지만telldir()
a를 반환하다off_t (long int)
그래서 별로 도움이 안 돼요.
문자열(char 배열) 내의 현재 경로를 가져오려면 어떻게 해야 합니까?
본 적 있어요?
#include <unistd.h>
char *getcwd(char *buf, size_t size);
간단한 예:
#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;
}
질문에는 Unix라는 태그가 붙어 있지만, 타겟 플랫폼이 Windows인 경우에도 방문하실 수 있습니다.Windows에 대한 답변은 다음과 같습니다.
DWORD WINAPI GetCurrentDirectory(
_In_ DWORD nBufferLength,
_Out_ LPTSTR lpBuffer
);
다음 답변은 C 코드와 C++ 코드 모두에 적용됩니다.
사용자 4581301이 다른 질문에 대한 코멘트로 제안하고 Google 검색 'site:microsoft.com getcurrent directory'를 통해 현재 상위 선택 항목으로 확인되었습니다.
#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;
}
현재 디렉터리(대상 프로그램을 실행하는 위치)를 가져오려면 C와 C++ 모두에서 Visual Studio와 Linux/MacOS(gcc/clang)에서 모두 작동하는 다음 예제 코드를 사용할 수 있습니다.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#if defined(_MSC_VER)
#include <direct.h>
#define getcwd _getcwd
#elif defined(__GNUC__)
#include <unistd.h>
#endif
int main() {
char* buffer;
if( (buffer=getcwd(NULL, 0)) == NULL) {
perror("failed to get current directory\n");
} else {
printf("%s \nLength: %zu\n", buffer, strlen(buffer));
free(buffer);
}
return 0;
}
man 페이지를 검색하다getcwd
.
주의:getcwd(3)
는 Microsoft libc: getcwd(3)에서도 사용할 수 있으며 예상대로 작동합니다.
링크해야 합니다.-loldnames
(대부분 자동으로 실행되는 oldnames.lib) 또는 use를 사용합니다._getcwd()
수정되지 않은 버전은 Windows RT에서 사용할 수 없습니다.
getcwd 사용
#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;
}
또는
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
main() {
char *buf;
buf=(char *)malloc(100*sizeof(char));
getcwd(buf,100);
printf("\n %s \n",buf);
}
언급URL : https://stackoverflow.com/questions/298510/how-to-get-the-current-directory-in-a-c-program
'programing' 카테고리의 다른 글
조건부 a href(Vuejs) (0) | 2022.07.26 |
---|---|
Java에서 서명되지 않은 int 선언 (0) | 2022.07.26 |
C에서 밀리초 단위로 대체 수면 기능이 있습니까? (0) | 2022.07.26 |
VueJS DevTools에서 Vuex를 '보이지 않음'으로 만드는 방법 (0) | 2022.07.26 |
Nuxt 및 vue에서의 Data() VS asyncData() (0) | 2022.07.26 |