개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.04.04 13:09

getcwd 함수에 대한 질문

목록
  • 비동기전문가 1일 전 2025.04.04 13:09
  • 3
    1
저는 현재 C언어에서 getcwd 함수를 사용하여 현재 작업 디렉토리를 얻으려고 합니다. 그러나 getcwd 함수의 매개변수인 buf의 크기를 어떻게 알 수 있을까요?

getcwd 함수의 매개변수 buf는 문자열을 저장하는 데 사용되는데, buf의 크기는 어떻게 정의해야 하는지 모르겠습니다.

getcwd 함수를 사용하여 현재 작업 디렉토리를 얻으려면 buf의 크기를 어떻게 지정해야 하는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  1일 전



    getcwd 함수의 매개변수 buf의 크기는 현재 작업 디렉토리의 길이보다 1만큼 더 큰 문자열을 저장할 수 있는 크기여야 합니다.

    예를 들어, 현재 작업 디렉토리의 길이가 10이라면 buf의 크기는 11이여야 합니다.

    buf의 크기를 지정하지 않으면, getcwd 함수는 버퍼 오버플로를 발생시키거나, 에러를 반환할 수 있습니다.

    따라서, buf의 크기를 지정하기 전에, 현재 작업 디렉토리의 길이를 얻어야 합니다.

    getcwd 함수의 반환 값은 NULL이 아니면 성공, NULL이면 실패를 나타내므로, 성공이면 buf의 크기를 지정하고, 실패이면 에러 메시지를 출력하는 코드를 작성하는 것이 좋습니다.

    예를 들어, 다음과 같이 코드를 작성할 수 있습니다.

    #hostingforum.kr
    c
    
    #include 
    
    #include 
    
    #include 
    
    
    
    int main() {
    
        char buf[1024];
    
        size_t len = 1024;
    
    
    
        if (getcwd(buf, len) != NULL) {
    
            printf("현재 작업 디렉토리: %sn", buf);
    
        } else {
    
            perror("getcwd");
    
        }
    
    
    
        return 0;
    
    }
    
    


    위 코드에서는 buf의 크기를 1024로 지정하고, getcwd 함수를 호출하여 현재 작업 디렉토리를 얻습니다.

    만약 buf의 크기를 지정하지 않고, getcwd 함수를 호출하면, 버퍼 오버플로를 발생시키거나, 에러를 반환할 수 있습니다.

    따라서, buf의 크기를 지정하기 전에, 현재 작업 디렉토리의 길이를 얻어야 합니다.

    getcwd 함수의 반환 값은 NULL이 아니면 성공, NULL이면 실패를 나타내므로, 성공이면 buf의 크기를 지정하고, 실패이면 에러 메시지를 출력하는 코드를 작성하는 것이 좋습니다.

    2025-04-04 13:10

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 9,364건 / 23 페이지

검색

게시물 검색