問 2(提出プログラム名:ex1002a.c)
このプログラム(ex1002a.c)をダウンロードし,その中の関数 next_char を完成させなさい.
関数 next_char は,引数で与えられたポインタ p を用い,
そのポインタ p が参照している char 型変数の持つ文字を
(文字コードでいうところの)1 つ後の文字へ書き換えるものとする.
ただし,関数 main の内容は一切書き換えないこと.
【注意】
関数 next_char は戻り値を持たないので戻り値型は void として宣言してある.
これを変更してはいけませんし,戻り値を持たせても(return を書いても)いけません.
【ヒント】
この問題も ex1001a と同様で,関数の中身は 1 行の命令だけで実現できます.
要は (*p) が,対象の char 変数の別名になりますので,この内容を +1 したもので上書きすればよいです.
なお,(*p) のように ( ) を付けて書くことを強くお勧めします.さもないとうまく動作しない(解釈が変わる)場面もあります.詳しくは次回の講義資料で説明します.
- 【プログラムの実行結果】(その1)※赤字は実行時にキーボードから入力する内容
文字を 1 つ入力してください:a next_char 実行前の文字 = a⏎ next_char 実行後の文字 = b⏎
- 【プログラムの実行結果】(その2)※赤字は実行時にキーボードから入力する内容
文字を 1 つ入力してください:@ next_char 実行前の文字 = @⏎ next_char 実行後の文字 = A⏎
- 【プログラムの実行結果】(その3)※赤字は実行時にキーボードから入力する内容
文字を 1 つ入力してください:% next_char 実行前の文字 = %⏎ next_char 実行後の文字 = &⏎
【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 実行の画面出力が上の例と違う(きちんと確認していない).
■ 関数 next_char の内容が必要以上に複雑になっている(ヒントで示したように +1 した値で上書きするだけなので 1 行で終わりです).
■ 注意書きを見落としていて main 関数の中身を書き換えてしまっている.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない)
← [ 問 1 (ex1001a.c) ]
ミスが無いことを確認したら次の問題へ → [ 問3 (ex1003a.c) ]