2012-10-15 5 views
0

파일이 존재하고 어떤 응용 프로그램에서도 사용하지 않더라도 C로 파일을 열 수 없습니다. 누군가이 문제의 원인을 말해 줄 수 있습니까?C에서 파일을 열 수 없습니다

int main() 
{ 
    FILE* oud; 
    unsigned size; 
    unsigned* bytes; 
    char path[] = "C:\\Users\\Ruben\\Documents\\test.txt"; 
    errno_t error; 

    if ((error = fopen_s(&oud, path, "rb")) == NULL) 
    { 
     perror(NULL); 
     getchar(); 
     return -1; 
    } 

    fclose(oud); 
    getchar(); 
    return 0; 
    } 
} 

출력은 "오류 없음"입니다.

+0

fopen_s에 의해 반환 된 오류 코드를 검사하는 대신'perror (NULL); '을 호출하기 때문에 오류 메시지가 표시되지 않는 이유가있을 수 있습니다. – Philipp

답변

7

fopen_s() 반환 실패 성공 0하지 NULL :

제로 성공하는 경우; 실패시 오류 코드. 이러한 오류 코드 및 기타 오류 코드에 대한 자세한 내용은 _doserrno, errno, _sys_errlist 및 _sys_nerr을 참조하십시오. 분명 사실이다

if (0 == 0) 

:

NULL 매크로는 파일이 게시 된 코드에서 if() 열려있는 경우 의미있는 (아마도) #define D 0까지입니다. 로 변경

if ((error = fopen_s(&oud, path, "rb")) != 0) 
0

... 그리고 그것을 참조로 전달이기 때문에 당신은 oud 변수에 파일 포인터를받을 수 있습니다. 따라서 fopen_s을 호출 한 후 성공하면 0을 반환하고 일반적으로 oud을 추가 작업에 사용합니다.

관련 문제