1

私はプログラミングに不慣れで、15を超えるファイルを書き込むために多くのファイルを作成する必要があるという問題があるため、手動でファイルの配列を使用したくありません。それは問題なく動作しますが、すべてのファイルの場所を指定する必要があり、「for cyclus」を使用して、宛先のファイルの名前を変更できない場合に問題が発生します。これはコードの一部です...

#include <stdio.h>
main()
{
int i;
FILE *files[14];
for(i=0;i<15;i++)
files[i]=fopen("C:\\File.txt" ,"w");
}
for(i=0;i<15;i++)
fclose(files[i]);
getch();
}

問題は、最初のファイルのみを開くが、他のファイルは開かないため、fopen関数にあります...さらに説明が必要な場合は、可能な限り証明しようとするように依頼してください。ありがとう

4

2 に答える 2

1

指定する名前は1つだけなので、15個のファイルを開こうとするのではなく、1つのファイルを15回開こうとします。共有モードを指定しない限り、それは失敗します(少なくとも、Windows上のほとんどのコンパイラでは、これが使用しているようです)。

私の推測では、15種類のファイルを開きたいと思いますが、その場合は15種類のファイル名を指定する必要があります。そのための1つの可能性は、インデックスを含む名前を合成することです。あなたはCを使用しているように見えるので(タグにもかかわらずc++)、私は今のところCに固執します。

int i;
FILE *f[15];

for (i=0; i<15; i++) {
    char name[32];

    sprintf(name, "File%d.txt", i);
    f[i] = fopen(name, "w");
}
于 2013-02-14T00:33:22.797 に答える
0

最初に、使用するファイルの配列を定義する必要があります。

したがって、FILE * files [14]を宣言するときは、それらの各ファイルが何であるかを実際に指定する必要があります。

最初に、特定のファイル名ではなく文字列のセットを宣言し、それらをループする必要があります。

また、forループが間違っているので、

for(i = 0; i < 14; i++) {
...
}

0からインデックス作成を開始し、13からインデックス作成を停止する必要があります。

于 2013-02-14T00:32:10.507 に答える