0

我无法在 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;
    }
}

输出是:“没有错误”。

4

1 回答 1

6

fopen_s()成功返回0,而不是NULL失败:

成功则为零;失败的错误代码。有关这些错误代码和其他错误代码的更多信息,请参见 _doserrno、errno、_sys_errlist 和 _sys_nerr。

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

if (0 == 0)

这显然是真的。改成:

if ((error = fopen_s(&oud, path, "rb" )) != 0)
于 2012-10-15T14:11:21.907 回答