- ベストアンサー
fopenでファイル名に、変数を使いたい
カレントディレクトリにある「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の呼び出しに余分なパラメータがある」と出てしまいます。 どのようにしたら、よろしいでしょうか?
- みんなの回答 (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); }
その他の回答 (1)
- HIRO-2003-12
- ベストアンサー率35% (5/14)
「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; }
お礼
無事読み取ることが出来ました。 ありがとうございました。
お礼
無事読み取ることが出来ました。 ありがとうございます。