2013-03-13 2 views
0

파일 (입력)이 C의 프로그램 디렉토리에 있는지 어떻게 확인합니까? 처음에는 파일을 열 수 있다고 생각하지만 사용자가 ../important_dir/important_file과 같은 내용으로 다른 파일을 볼 수 없도록하려는 경우 사용자가 ./dir1/../file1과 같은 작업을 수행하면 괜찮을 수도 있습니다. 즉, 파일이 현재 디렉터리 (자식 디렉터리 없음)에있는 한 해당 디렉터리를 열어도됩니다.파일이 C의 현재 디렉토리에 있는지 확인하는 방법은 무엇입니까?

그럼 내가 현재 디렉토리에있는 모든 것을 검색하는데 사용할 수있는 readdir을 찾았지만 여전히 현재 디렉토리에 많은 파일이 있다면 사용자가 갈 때마다 파일 이름을 찾기에는 너무 느리다. 입력.

이를 수행하는 빠르고 안전한 방법이 있습니까?

답변

0

stat()을 사용하면 파일 상태를 확인할 수 있습니다. 해당 파일이 존재하지 않으면 -1을 반환하고 errnoENOENT으로 설정합니다.

char filename[] = "myfile"; 

struct stat s = {0}; 

if (!(stat(filename, &s) 
{ 
    if (ENOENT == errno) 
    perror("file does not exist."); 
} 
+0

안녕하세요, 사용자가 현재 디렉토리에없는 내 파일을 검사하지 못하게하려고합니다. stat가 유효한 한 경로를 허용하는 것으로 보이므로 사용자 파일에'../dir3/file4', 내가 예상했던 것과 다르다. – user1537085

1

나는 realpath가 작업을해야한다고 생각합니다. 가능하면 내일 솔루션을 게시 할 예정입니다.

+0

네,'realpath()'가 파일 이름에 대한 질문을'getcwd()'가 반환하는 결과와 비교하십시오. – alk

관련 문제