練習 [13] ファイル処理(4/5)

練習 4(提出プログラム名:p1304.c)

サンプルプログラム 4(sample4.c)を p1304.c という別の名前のファイルにコピーしなさい.
そして,p1304.c を以下の仕様を満たすように編集しなさい.
※冒頭部分に #include <ctype.h> を追加するのを忘れないこと.

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

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

なお,毎年ごく少数の人たちだけであるが,コピー先として指定したファイルに正しい内容が書き込まれていることを確認もせずに提出する人がいる.自分が該当することのないように注意せよ.(きちんと確認せずに提出されるのはチェックする側からしてみれば非常に迷惑である.)

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

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

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


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