問 7(提出プログラム名:ex1207.c)
まず,問 5 で作った ex1205.c を ex1207.c という別名のファイルにコピーしなさい.
そして,ex1207.c を編集して次のように内容を変更しなさい:
【問 5 からの変更点】
読み込んだ文字列の長さが 5 文字未満(5 文字より短い)場合,
足りない文字数分だけその文字列の末尾に '*' を追加する.
【ヒント】
scanf で読み込んだ文字列が配列 word に格納されていた場合,この長さが 5 文字未満ならば末尾に * を追加しなければならないことになります.
そこで,while 文を使って
(int)strlen(word) < 5 である限り strcat(word, "*"); を繰り返す
という処理を行うとよいです.
※もともと word の文字数が 5 以上ならば while の条件は成立しないので特に追加は起こりません.
strlen の戻り値は符号なし整数になっていて int 型とは微妙に違う型になっています.
それゆえ,上のように int 型へキャストして使うのが安全です.
- 【プログラムの実行結果】(その1)※赤字は実行時にキーボードから入力する内容
実行例にあるように This* と is*** の間には空白が必要なのでそれを忘れないこと!
文字列を入力してください:This これまでの文字列:[This*] (5文字)⏎ 文字列を入力してください:is 追加後の文字列:[This* is***] (11文字)⏎ 文字列を入力してください:a 追加後の文字列:[This* is*** a****] (17文字)⏎ 文字列を入力してください:sample 追加後の文字列:[This* is*** a**** sample] (24文字)⏎
- 【プログラムの実行結果】(その2)※赤字は実行時にキーボードから入力する内容
文字列を入力してください:C これまでの文字列:[C****] (5文字)⏎ 文字列を入力してください:programming 追加後の文字列:[C**** programming] (17文字)⏎ 文字列を入力してください:exercise 追加後の文字列:[C**** programming exercise] (26文字)⏎
【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 実行の画面出力が上の例と違う(きちんと確認していない).
例えば,追加される * の個数が違っている.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).
← [ 問 6 (ex1206.c) ]
ミスが無いことを確認したら次の問題へ → [ 問 8 (ex1208.c) ]