課題 [11] ポインタ②(2/9)

問 2(提出プログラム名:ex1102a.c)

このプログラム(ex1102a.c)をダウンロードし,その中の関数 mask_upper を完成させなさい.

関数 mask_upper は,引数で与えられたポインタ p を用い,そのポインタ p が参照している文字列(char 配列)の中のアルファベット大文字を '*' で上書きするものとする.
ただし,その他の文字はそのままとする.
なお,以下に記載している【よくあるミス】に該当する誤りを犯さないよう注意せよ.

【注意】
関数 main の内容は一切書き換えないこと.

【よくあるミス】
この問題は文字列を扱う問題ですので,問1(ex1101a)とは異なり,文字列の末尾はナル文字かどうかで決まります.繰り返しの条件を間違えないようにしてください(※SIZE まで繰り返すという問題ではありません).

  • 【プログラムの実行結果】(その1)※赤字は実行時にキーボードから入力する内容
英単語を入力してください:EhimeUniv123
大文字は * に書き換えました⏎
*hime*niv123⏎

  • 【プログラムの実行結果】(その2)※赤字は実行時にキーボードから入力する内容
英単語を入力してください:sample
大文字は * に書き換えました⏎
sample⏎

  • 【プログラムの実行結果】(その3)※赤字は実行時にキーボードから入力する内容
英単語を入力してください:GPA
大文字は * に書き換えました⏎
***⏎

【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 実行の画面出力が上の例と違う(きちんと確認していない).
 例えば,大文字ではなく小文字が * に置き換えられていたり,* の個数が違っていたりする.
■ 大文字かどうかの判定で使う関数 isupper の使い方を間違えている(以前にも説明したように == 1 を付けて書くのは誤りです).
■ 注意書きを見落としていて main 関数の中身を書き換えてしまっている.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


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