問 8(提出プログラム名:ex1308.c)
まず,このプログラム(ex1308.c)をダウンロードしなさい.
このプログラムは,指定された 2 つのファイルについて,1 個目のファイルの内容を 2 個目のファイルの末尾へ追加することを目指しているが未完成になっている.以下の手順に従って目的を達成するようプログラムを完成させなさい.
【手順】手順(3)と(4)を完成させなさい.
(1)コピー元のファイルの名前 fname とコピー先(追記先)のファイルの名前 tname をそれぞれ読み込む.(実装済)
(2)コピー元とコピー先が同じ場合は処理できないのでエラーとする.(実装済)
(3)コピー元のファイルを読み取りモードで,コピー先のファイルを追記モードでそれぞれオープンする(エラー処理も行う).
(4)コピー元のファイルの内容を 1 文字ずつ(すべて)コピー先のファイルへ追記する.
(5)2 つのファイルをクローズし,作業完了のメッセージを画面に出力する.(実装済)
【注意】
コピー先のファイルを VSCode やメモ帳といったアプリで開いたままプログラムを実行しないこと.
ファイルがロックされて上書きに失敗することがある.
【ヒント】
やっている内容はサンプルプログラム 4 とほとんど同じであり,書き込み先のファイルを追記モードで開くのが主な違いです.
- 【プログラムの実行結果】(その1)※赤字は実行時にキーボードから入力する内容
(このデータファイル data1308-1.txt とデータファイル data1308-2.txtをダウンロードして使ってください)
コピー元のファイル名を入力してください: data1308-1.txt コピー先(追加先)のファイル名を入力してください: data1308-2.txt data1308-2.txt に data1308-1.txt の内容を追加しました.⏎【実行例1の後のdata1308-2.txtの内容】
###⏎ #⏎ #⏎ #⏎ #⏎ #⏎ ###⏎
- 【プログラムの実行結果】(その2)※赤字は実行時にキーボードから入力する内容
(このデータファイル data1308-3.txt をダウンロードして使ってください)
コピー元のファイル名を入力してください: data1308-1.txt コピー先(追加先)のファイル名を入力してください: data1308-3.txt data1308-3.txt に data1308-1.txt の内容を追加しました.⏎【実行例2の後のdata1308-3.txtの内容】
##### # #⏎ # #⏎ ###⏎ #⏎ #⏎ ###⏎
【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 実行の画面出力と書き込み先のファイルの内容が上の例と違う(きちんと確認していない).
■ コピー元とコピー先が逆になっている.
■ コピー先を追記モード("a")ではなく書き込みモード("w")でオープンしてしまい,元の内容が消えてしまっている.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).
← [ 問 7 (ex1307.c) ]
ミスが無いことを確認したら次の問題へ → [ 問 9 (ex1309.c) ]