운영체제에 관계없이 C로 파일이 있는지 없는지 확인하는 방법

발생하는 문제 및 실행환경

파일이 있는지 없는지 알아내려면 꼭 이렇게 써야 하나요? 더 짧은 방법이 있으면 가르쳐주세요. 파일이 많아지니까 여러 개 체크하는 거 너무 비효율적이에요

소스코드

int exists(const char *fname)
{
    FILE *file;
    if (file = fopen(fname, "r"))
    {
        fclose(file);
        return 1;
    }
    return 0;
}

1답변

  • 좋아요

    0

    싫어요
    채택취소하기

    unistd.h의 access()함수를 쓰면 코드 길이를 줄일 수 있습니다

    if( access( fname, F_OK ) != -1 ) {
        // 파일이 있을 때
    } else {
        // 파일이 없을 때
    }
    

    파일이 있는지 없는지가 아니라 읽기/쓰기/실행이 가능한지 확인할 때는 F_OK자리에 R_OK/W_OK/X_OK를 써주세요. R_OK | W_OK같이 or를 써서 여러 개를 한꺼번에 넣을 수도 있습니다

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.