課題 [11] ポインタ①(3/9)

問 3(提出プログラム名:ex1103.c)

このプログラム(ex1103.c)をダウンロードし,その中の関数 next_char を完成させなさい

関数 next_char は,引数で与えられたポインタ p を用い,
そのポインタ p が参照している char 型変数の持つ文字
(文字コードでいうところの)1 つ後の文字へ書き換えるものとする.
ただし,関数 main の内容は一切書き換えないこと.

【注意】
関数 next_char戻り値を持たないので戻り値型は void として宣言してある.
これを変更してはいけませんし,戻り値を持たせても(return を書いても)いけません.

【ヒント】
この問題も ex1102 と同様で,関数の中身は 1 行の命令だけで実現できます.
要は (*p) が,対象の char 変数の別名になりますので,この内容を +1 したもので上書きすればよいです.
なお,(*p) のように ( ) を付けて書くことを強くお勧めします.さもないとうまく動作しない(解釈が変わる)場面もあります.詳しくは次回(第12回)の講義で説明します.

  • 【プログラムの実行結果】(その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 上でインデントを自動で揃える作業をやっていない)


以上の 3 問は明日(7/5)の 16時までに提出を済ませてください.
(ex1101.c ~ ex1103.c を Moodle から提出してください.)
くれぐれも各問題で記載されている注意事項や「過去にあったミス」を見落とさないようにしてください.なお,コンパイルエラーや無限ループが含まれる場合は総合評価を 0 点とします.
提出後に間違いに気付いた場合,〆切前であれば差し替え(上書き)は可能です.


次のページ以降に問 4 ~問 9 があります.
問 4 以降を明日の16時までに早期提出した場合は加点の対象とします
(一部のみを早期提出してもよいです).
※なお,明らかに間違っている(まともに動かない)プログラムを早期提出するのは絶対にやめてください.不正に加点を得ようとした行為と見なして減点とします.

次の問題へ → [ 問4 (ex1104.c) ]