練習 2(提出プログラム名:p1102a.c)
まず,このプログラム(p1102a.c)をダウンロードしなさい.
このプログラムでは関数 string_copy というものを用意し,ポインタ from の指す文字列(char 配列)のコピーを別の配列(ポインタ to が指す)へ作ろうとしているが,途中のもの(未完成)となっている:
関数 string_copy では,先頭から n 文字だけはそのままコピーするが,
残りの文字については * をコピーするようにしたい.
(n は 1 以上であり,なおかつコピー元の文字数以下であると仮定してよい)
関数 string_copy を完成させなさい.
なお,string_copy の中では 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 上でインデントを自動で揃える作業をやっていない).
← [ 練習 1 (p1101a.c) ]
ミスが無いことを確認したら次の問題へ → [ 練習 3 (p1103a.c) ]