2

私はこの答えを見つけるためにしばらく探していましたが、解決策を見つけることができません。基本的に、コンピューターのcドライブ内のファイルの読み取りと書き込みを試みています。しかし、それはWindows 7であるため、裏側が苦痛であり、私のCプログラムにそれを行う許可を与えないことを選択します。管理者モードで実行したり、別のディレクトリを使用したりしてみました。次のコードを実行すると、次のようになります。

FILE *fp = fopen(strIn, "r");
if(fopen(strIn, "r") == NULL)
{ 
    printf("Error: %d (%s)\n", errno, strerror(errno));
    getchar();
}

返されるエラーは「エラー13の許可が拒否されました」です。fopenMicrosoftは、これ以上使用するのが好きではないことを知っていますがfopen_s、実装方法を理解するのが難しく、リソースも不足しています。現時点で本当に私を後退させているので、この問題を回避する方法はありますか?とても有難い、

ジャック

4

1 に答える 1

5

あなたのコードはファイルを2回開いています:

FILE *fp = fopen(strIn, "r");
if(fopen(strIn, "r") == NULL)  /* Second open, leaks FILE *! */

Windows はファイルを複数回開くことを許可することにうるさい場合があるため、これによりエラーが発生する可能性があります。2 行目は次のようになります。

if(fp == NULL)
于 2012-07-06T08:46:44.893 に答える