プロが教えるわが家の防犯対策術!

カレントディレクトリにある「1.txt」を扱う場合は
fp = fopen("./1.txt", "r");
上記で出来るのですが、扱いたいファイルが複数あり、
「./x.txt」 として、「x」の値を変えながら複数のファイルを取り扱いと考えております。

char namae[2]={'1','2'};
for(x=0;x<2;x++)
fp = fopen("./%c.txt",name[x], "r");

とやってみたのですが、
「fopenの呼び出しに余分なパラメータがある」と出てしまいます。
どのようにしたら、よろしいでしょうか?

A 回答 (2件)

>fp = fopen("./%c.txt",name[x], "r");


この記述では、
"./%c.txt"
name[x]
"r"
の3つのパラメータとなってしまいます。
fopen()のパラメータは、ファイルパスとモードの2つですので、パラメータが多くなっています。

なので、先に動的に変わるファイルパスを作成し、そのファイルパスをfopen()に指定したらいいのではないでしょうか。

char namae[2]={'1','2'};
char filepath[256];
for(x=0;x<2;x++) {
 sprintf(filepath, "./%c.txt", namae[x]);
 fp = fopen(filepath, "r");
 /*その他の処理*/
 fclose(fp);
}
    • good
    • 1
この回答へのお礼

無事読み取ることが出来ました。
ありがとうございます。

お礼日時:2004/12/23 19:23

「x」を引数にしたmy_fopenを作ればいいのでは?



FILE *my_fopen(int x)
{
char name[2] = {'1','2'};
if (x >= 0 && x < 2) {
char file[256];
sprintf(file, "./%c.txt", name[x]);
return fopen(file, "r");
}
return (FILE *)NULL;
}
    • good
    • 0
この回答へのお礼

無事読み取ることが出来ました。
ありがとうございました。

お礼日時:2004/12/23 19:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A