2

テキストファイルを読み込んで内容を画面に表示しようとしています。ファイルは単なる単語のリストです。プロジェクトのツリーに .txt ファイルを配置しましたが、コードでファイルが開かれません。私の質問は、.txt ファイルが間違った場所にありますか? fopen はこれを行うための正しい関数ですか? 私はこれでぐるぐる回っていますが、とてもシンプルに見えます! :(

ファイルは「ProjectName」の下のディレクトリに保存されます -- Source Files -- File.txt

これまでの私のコードは次のとおりです。

int main (void)
{

char word [30];

    FILE *fp;

    if ((fp = fopen("sort.txt", "r")) == NULL)
    {
        printf( "File could not be opened\n");
    }
    else
    {
        fscanf(fp, "%s", word);

        while (!feof(fp))
        {
            fscanf(fp, "%s", word);
        }

        fclose (fp);
    }
    return 0;
}

問題が解決しました。ソース ファイルを右クリックし、[新しい項目の追加] を選択し、[ユーティリティ] オプションでテキスト ファイルを選択して、プロジェクトにテキスト ファイルを再作成しました。次に、元のテキスト ファイル データをそこにコピーしました。その後、ファイルは適切なディレクトリに作成されました。シンプルなソリューション!ハッピー初心者コーダー!!

4

2 に答える 2

0

相対パスを開いているため、File.txt を .exe と同じフォルダーに置く必要があります。もちろん、あなたが File.txt を書いたとき、あなたは sort.txt を意味していたと思います。それはあなたのコードが参照しているものだからです。

マネージ言語では、任意のファイルに対して "常にコピー" を使用できますが、C++ では使用できません。したがって、特定のファイルを出力ディレクトリにコピーするには、ビルド後のイベントを追加する必要があります。

  • C++ プロジェクトを右クリックし、プロパティを選択します。
  • 「構成プロパティ」を展開します
  • 「ビルドイベント」を展開します
  • 「ビルド後のイベント」をクリックします
  • copy "$(ProjectDir)sort.txt" "$(OutputPath)"「コマンドライン」ボックスに貼り付けます
  • [OK] をクリックします。

ビルドすると、sort.txt が実行可能ファイルと同じ場所にコピーされます。sort.txt が「ソース ファイル」フォルダにあるように見えますが、実際にはそうではないことに注意してください (少なくとも既定では)。

于 2013-02-15T18:19:26.103 に答える
0

コードは、ソリューション内の bin フォルダーにコンパイルされます。開いているファイルは、bin フォルダー内の .exe と同じ場所でファイルを探しています。ソリューション フォルダー内のファイルをクリックし、右クリックして [プロパティ] を選択し、[出力ディレクトリにコピー] オプションを [常にコピー] に設定すると、VS はそのファイルを exe と同じ場所にコピーします。

于 2013-02-15T18:19:51.460 に答える