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マクロは#define(おそらく)に変更されます。つまり、投稿されたコードで0ファイルが開かれている場合は次のようになります。if()

if (0 == 0)

これは明らかに真実です。への変更:

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