練習 [12] ポインタ②(3/5)

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

まず,このプログラム(p1203.c)をダウンロードしなさい.
p1203.c ではサンプルプログラム3(sample3.c)を次のように編集しようとしている途中のもの(未完成)となっている:

 関数 string_copy第 3 の引数 n(int 型)を追加している.
 新しい string_copy では,先頭から n 文字だけはそのままコピーするが,
 残りの文字については * をコピーするようにしたい.
 (n は 1 以上であり,なおかつコピー元の文字数以下であると仮定してよい)

関数 string_copy を完成させなさい
なお,string_copy の中ではサンプルプログラム 3 と同じく while 文を使っているが,これを for 文で書き換えてもよいものとする.(どちらで書いても正解とみなす)

【注意】
関数 main の内容を書き換えてはいけません.
関数 string_copy の戻り値型や引数を変更してはいけません

【特に注意すべきこと】
コピー先の char 配列 to へすべての文字を代入した後には,文字列の終端を表すナル文字('\0')も書き込む必要がありますので忘れないよう(間違えて to[i] = '\0'; を消さないよう)に注意しましょう.

  • 【プログラムの実行例】(その1)赤字は実行時にキーボードから入力する内容
文字列(空白無し)を 1 つ入力してください:programming
先頭から何文字をそのままコピーしますか:5
コピーした文字列:<progr******>
  • 【プログラムの実行例】(その2)赤字は実行時にキーボードから入力する内容
文字列(空白無し)を 1 つ入力してください:sample
先頭から何文字をそのままコピーしますか:6
コピーした文字列:<sample>
  • 【プログラムの実行例】(その3)赤字は実行時にキーボードから入力する内容
文字列(空白無し)を 1 つ入力してください:aaaa
先頭から何文字をそのままコピーしますか:1
コピーした文字列:<a***>

【過去にあったミス(減点となり,やり直しを命じられる)】
3 種類の実行例を確認せずに提出してしまっている.
■ コピー先の char 配列へナル文字('\0')を書き損ねていて,文字列表示の末尾が文字化けしている.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


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