无法在C中打开文件

无法在C中打开文件,c,windows,file,fopen,C,Windows,File,Fopen,我无法在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" )) == NU

我无法在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
,失败时返回
NULL

如果成功,则为零;失败时的错误代码。有关这些错误代码和其他错误代码的更多信息,请参阅_doserrno、errno、_sys\u errlist和_sys\u nerr

NULL
宏是
#define
d to
0
(可能),这意味着如果打开文件,则发布代码中的
if()
是:

if (0 == 0)
这显然是真的。改为:

if ((error = fopen_s(&oud, path, "rb" )) != 0)
成功时返回
0
,失败时不返回
NULL

如果成功,则为零;失败时的错误代码。有关这些错误代码和其他错误代码的更多信息,请参阅_doserrno、errno、_sys\u errlist和_sys\u nerr

NULL
宏是
#define
d to
0
(可能),这意味着如果打开文件,则发布代码中的
if()
是:

if (0 == 0)
这显然是真的。改为:

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

我不知道可能是什么错误,但是您没有得到有用的错误消息的原因可能是因为您调用了
perror(NULL)
而不是检查fopen_s返回的错误代码。我不知道错误可能是什么,但您没有得到有用的错误消息的原因可能是因为您调用了
perror(NULL)而不是检查fopen_s返回的错误代码。