나쁜 영어로 사과드립니다.C89를 통해 파일의 존재 여부를 어떻게 확인할 수 있습니까?
다른 파일은 다른 권한을 가질 수 있습니다. 예를 들어, 파일 읽기/쓰기에 대한 권한이 없어도되지만이 파일은 존재합니다. C89를 통해 그러한 파일의 존재 여부를 어떻게 확인할 수 있습니까?
감사합니다. 최고 감사합니다
나쁜 영어로 사과드립니다.C89를 통해 파일의 존재 여부를 어떻게 확인할 수 있습니까?
다른 파일은 다른 권한을 가질 수 있습니다. 예를 들어, 파일 읽기/쓰기에 대한 권한이 없어도되지만이 파일은 존재합니다. C89를 통해 그러한 파일의 존재 여부를 어떻게 확인할 수 있습니까?
감사합니다. 최고 감사합니다
순수 ISO C89에서는 파일의 존재 여부를 확인할 수있는 좋은 방법이 없습니다. 그러나 구현 정의 된 솔루션이나 다른 OS 관련 확장이 있습니다. 예를 들어이 (access()
)는 C89의 일부가 아닌 것을
int file_exists(const char *name)
{
return access(name, F_OK) == 0;
}
참고하지만, 대부분의 시스템 하나에 대해 그것을 가지고 함으로 사용.
또는이 다시 C89 아니지만, 대부분의 C89-준수 시스템 ENOENT
을 제공 할 것입니다
int file_exists(const char *name)
{
FILE *f = fopen(name, "r");
if ((f == NULL) && (errno == ENOENT)) {
return 0;
}
fclose(f);
return 1;
}
있다.
또 다른 옵션은 stat()
함수를 사용하는 것이며, 파일이없는 경우 -1을 반환하고 errno
을 ENOENT
으로 설정합니다.
파일이 존재하는지 확인하기위한 이식성있는 방법은 없습니다. (POSIX.1의 access
또는 stat
과 같은) 시스템 고유의 메소드에 의존해야한다. 때로는 명명 된 파일을 포함 할 수있는 디렉토리를 읽을 수있는 권한이 없으므로 명명 된 파일의 존재 여부를 확인하지 못할 수도 있습니다.
답변 해 주셔서 감사합니다. –
고마워요! 나는 그것을 사용하려고 노력할 것이다. –