- ベストアンサー
c言語でファイルを読み書き→別のファイルを読み書き
最近、c言語の勉強をし始めました。 今日、ファイルの読み書きを勉強していて、ふと思ったのですが、 c言語でファイルを読み書き→別のファイルを読み書きのループってできるのですか。 例えば、list1 を読み込み○○して syuturyoku1 に書き込み、その後、list2を読み込み○○して syuturyoku2 に書き込み・・・のループです。 ファイル名は、1~連続の数字です。こんなことって可能なんでしょうか。 できれば、どんな感じのプログラムになるか書いてくれるとありがたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ファイルポインタの使い回しについては既に回答が。 >ファイル名は、1~連続の数字です。こんなことって可能なんでしょうか。 sprintf()などで文字列化してください。 for(No = 1;No < 10;No++) { sprintf(FineName, "list%d", No); fp1 = fopen(FineName, "r"); 読み込み処理 fclose(fp1); sprintf(FineName, "syuturyoku%d", No); fp2 = fopen(FineName, "w"); 書き込み処理 fclose(fp2); } みたいな感じで。 たまに… fp1 = fopen("listNo", "r"); と記述して、Noの部分が変数Noの内容に置換されることを期待している人が居ますが… そんな動作はしませんのでご注意を。 # そんな動作したら…ループによく使われる変数であるiが置換されまくって……楽しいことになりそうですな。 # 「このプログラムがファイル読み込めないのは変数名なにがしを使用したからだ!!」みたいな。
その他の回答 (1)
- trajaa
- ベストアンサー率22% (2662/11921)
ファイルポインタとかハンドラも一つの変数です。 読んで書く、読んで書く、の繰り返しのようですが すべて読み切ってから書き込みを行うのなら極端な話、一つのファイルポインタを使い回しても何ら問題はありません。 でもまぁ、そんな使い方は間違いの元なので、読み取り専用と書き込み専用に分けるのが良さそうです。 変数と考えれば、ループも何ら不自由は無いし、ファイル名に連番が含まれているのならさらに容易。
お礼
いまさらですが、回答ありがとうございます
お礼
なるほど。試してみます。