12

ファイルを開いてテキストを出力しようとしていますが、エラーが発生し続けます。それで、最初から始めて、ファイルを開こうとしました。これは私のコードです:

#include <stdio.h>
#include <stdlib.h>
#define CORRECT_PARAMETERS 3

int main(void)
{
    FILE *file;
    file = fopen("TestFile1.txt", "r");
    if (file == NULL) {
        printf("Error");
    }
    fclose(file);
}

ファイルを実行すると、「エラー」がコンソールに出力され、それだけです。TestFile1.txt は、私の .exe と同じ場所にあります。これを修正するにはどうすればよいですか?

4

8 に答える 8

22

の代わりに、失敗の実際の理由 (許可の問題、無効な引数など) を出力する可能性があるものprintf("Error");を試してください。perror("Error")

于 2009-11-17T04:14:53.263 に答える
14

ファイルをどのように実行していますか?コマンドラインからですか、それとも IDE からですか? 実行可能ファイルがあるディレクトリは、必ずしも作業ディレクトリではありません。

でフルパス名を使用してみて、fopen問題が解決するかどうかを確認してください。その場合、問題は説明どおりです。

例えば:

file = fopen("c:\\MyDirectory\\TestFile1.txt", "r");
file = fopen("/full/path/to/TestFile1.txt", "r");

または、コマンド ウィンドウを開いて、実行可能ファイルがあるディレクトリに移動し、手動で実行します。

余談ですが、単純なものを挿入できます(それぞれWindowsまたはLinux / UNIX / BSD / etc用):

system ("cd")
system("pwd")

の前に、fopen実際にいるディレクトリを表示します。

于 2009-11-17T04:08:27.627 に答える
5

実行可能ファイルの作業ディレクトリが、保存されているディレクトリ以外に設定されている可能性があります。IDE の設定を確認してください。

于 2009-11-17T04:07:36.840 に答える
5

ちょっとしたエラーチェックが役に立ちます。いつでも errno の値をテストしたり、perror() または strerror() を呼び出して、fopen() 呼び出しが失敗した理由に関する詳細情報を取得したりできます。

それ以外の場合、パスの確認に関する提案はおそらく正しいです...ほとんどの場合、IDE からのものであると思われるディレクトリにいないため、期待する権限がありません。

于 2009-11-17T04:14:02.550 に答える
4

さて、問題があることがわかりました。次のステップは、エラーの正確な内容を把握することです。これをコンパイルして実行するとどうなりますか?:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    FILE *file;
    file = fopen("TestFile1.txt", "r");
    if (file == NULL) {
      perror("Error");
    } else {
      fclose(file);
    }
}
于 2009-11-17T04:18:43.597 に答える
1

ファイル名に絶対パスを使用してみてください。また、Windows を使用している場合は、getlasterror() を使用して実際のエラー メッセージを表示します。

于 2009-11-17T05:27:04.417 に答える
1

上記に加えて、現在のディレクトリを表示することに興味があるかもしれません:

int MAX_PATH_LENGTH = 80;
char* path[MAX_PATH_LENGTH];
getcwd(path, MAX_PATH_LENGTH);
printf("Current Directory = %s", path);

これは、gcc/glibc プラットフォームで問題なく動作するはずです。(私はそのタイプのプラットフォームに最も精通しています)。Windows タイプのプラットフォームを使用している場合の Visual Studio に関する質問がここに投稿されました。getcwd

于 2009-11-17T04:45:40.070 に答える
0

出力フォルダー ディレクトリは、IDE の他のディレクトリに構成されている必要があります。それを変更するか、ファイル名をファイルパス全体に置き換えることができます。

お役に立てれば。

于 2009-11-17T04:11:15.927 に答える