練習 4(提出プログラム名:p0904a.c)
まず,このプログラム(p0904a.c)をダウンロードしなさい.
そして,これを編集して以下の動作を行うプログラムに仕上げなさい.
この問題では,文字列(空白を含まない SIZE-1 文字以下のもの)を読み込んで,その内容を以下のルールに従って変換して出力させるものとする(SIZE はマクロで定義されている).
なお,このプログラムでは str 以外の char 配列を用意してはいけません.
【変換ルール】
それぞれの文字が
① アルファベット大文字の場合は小文字へ変換する.
② アルファベット小文字の場合は大文字へ変換する.
③ 数字の場合は半角のハイフン(※マイナス)(-)へ変換する.
④ 上のいずれでもない場合は変換しない(そのまま).
なお,入力される文字列の長さは SIZE-1 文字以下であると仮定してプログラムを作ってよい.
また,マクロの定義部分以外に 100 (や 99, 98 といった関連する数字)を直接書いてはいけません.
【ヒント】
char 配列 str に格納されている文字列の各文字 str[i] について,
それがアルファベット大文字かどうかは if ( isupper(str[i]) ) で判定できます.
その他も同様で講義スライドの最後のページを参考にしてください.
なお,ハイフン(マイナス)へ変換する場合は単純に '-' で上書きするだけでよいです.
※ "-" ではなく '-' ですので,囲みに使う記号を間違えないように.
また,文字列内の文字を先頭からチェックしていく場合,
for ( i = 0; i < SIZE; i++ ){ … のように配列内のすべての文字を見る必要はありません.
ナル文字より後は見る必要はないので for 文で書くならば,代わりに
for ( i = 0; str[i] != '\0'; i++ ){ … と書くのが良いでしょう.
while 文で書く場合も同様です.
- 【プログラムの実行例】(その1)※赤字は実行時にキーボードから入力する内容
※「変換後」として表示されている内容が,大文字・小文字を含めてすべて正しいか必ず確認せよ
変換元の文字列を入力してください(99文字以下):⏎ tHIS0IS2A9sAMPLE 変換前 [tHIS0IS2A9sAMPLE]⏎ 変換後 [This-is-a-Sample]⏎
- 【プログラムの実行例】(その2)※赤字は実行時にキーボードから入力する内容
変換元の文字列を入力してください(99文字以下):⏎ c8pROGRAM./.C3fILE 変換前 [c8pROGRAM./.C3fILE]⏎ 変換後 [C-Program./.c-File]⏎
【過去にあったミス(減点となり,やり直しを命じられる)】
■ 2 種類の実行例を確認せずに提出してしまっている.
例えば,大文字と小文字が逆であったり,数字がそのまま出力されたりしている.
■ ナル文字を別の文字で上書きしてしまい,出力の際に文字化けが起きている.
■ マクロ SIZE の定義部分以外に 直接 100 や 99, 98 等と書いてしまっている.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).
← [ 練習3 (p0903a.c) ]
ミスが無いことを確認したら次の問題へ → [ 練習5 (p0905a.c) ]