단순히 파일을 여는 것보다 더 좋은 방법이 있습니까?
int exists(const char *fname)
{
FILE *file;
if ((file = fopen(fname, "r")))
{
fclose(file);
return 1;
}
return 0;
}
fopen()
/ fclose()
메소드의 문제점 중 하나 는 파일이 존재하더라도 읽을 파일을 열지 못할 수 있다는 것입니다. 예를 들어, /dev/kmem
존재하지만 대부분의 프로세스는 읽기에도 열 수 없습니다. /etc/shadow
또 다른 파일입니다. 물론, 모두 stat()
와 access()
파일이 들어있는 디렉토리에 액세스 할 수있는에 의존; 그렇게 할 수 없으면 모든 베팅이 해제됩니다 (파일이있는 디렉토리에 대한 실행 권한이 없음).
if (file = fopen(fname, "r"))
경고합니다. if 문 내부에 괄호를 사용하십시오if ((file = fopen(fname, "r")))