練習 [12] ファイル処理(3/5)

練習 3(提出プログラム名:p1203a.c)

まず,このプログラム(p1203a.c)をダウンロードしなさい.
そして,p1203a.c を以下の仕様を満たすように編集しなさい.

【目的の処理】
 (1)コピー元のファイルの内容をコピー先のファイルへ書き込む際,
   文字をすべて大文字にして書き込むこと.
 (2)コピーした文字数を画面に出力すること.
   ここでは空白文字や改行文字等もすべて数に入れてよい.
   つまり,単純に fputc の実行回数を出力すればよい.

【注意】
既に存在しているファイルの名前をコピー先に指定してしまうと,fopen を行った時点でそれまでの内容は消えてしまう(ゴミ箱にも残らない)のでファイル名の誤入力には注意せよ.

【ありがちなミス】
コピー元の文字が c という変数に入っているとき
  toupper(c);
と書けば c が大文字に変わると勘違いする人がたまにいますが c を大文字に書き換えたいのであれば
 c = toupper(c);
と代入
しなければなりません.
また,toupper で変換できるのは 1 文字だけなのに,文字列をまとめて変換できると勘違いする人もいます.必ず 1 文字ずつの処理が必要です.

  • 【プログラムの実行例】(その1)赤字は実行時にキーボードから入力する内容
    入力に使用しているファイル(sample1203a1.c)はこちら
    ※文字数を出力し忘れていないか確認せよ.
     あわせて,aaa.c へ適切に書き込まれているか内容も必ず確認せよ.
コピー元のファイル名を入力してください:sample1203a1.c
コピー先のファイル名を入力してください:aaa.c
aaa.c に sample1203a1.c の内容をすべて大文字にしてコピーしました(501文字)
コピー元のファイル名を入力してください:sample1203a2.c
コピー先のファイル名を入力してください:bbb.c
bbb.c に sample1203a2.c の内容をすべて大文字にしてコピーしました(332文字)

【過去にあったミス(減点となり,やり直しを命じられる)】
2 種類の実行例を確認せずに提出してしまっている.
 例えば,コピーした文字数が違っている
■ 上のヒントを見落としていて toupper の使い方を間違っている.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


ミスが無いことを確認したら次の問題へ → [ 練習 4 (p1204a.c) ]