課題 [10] 文字列(3/9)

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

講義(3 限目)のサンプルプログラム 3 (sample3.c)を ex1003.c という別名のファイルにコピーしなさい.そして, ex1003.c を編集して,次の仕様のプログラムに仕上げなさい(実行例も参照せよ).

【目的の動作】
 入力されたメールアドレスをそのまま(文字数とともに)出力した後,
 ① ローカル部< > で囲んだかたちで出力し,
 ② @ の代わりに (at) と出力し,
 ③ ドメイン[ ] で囲んだかたちで出力し,最後に改行を出力する.

これらの出力を実現するにあたって,一部を自作の関数として別に分けて作ってもよいが,
すべての内容を ex1003.c に収めること(ヘッダに分けないこと).

【ヒント】
この問題ではメールアドレスの内容を書き換える必要はありません
単に所定のルールに従って画面へ出力するだけで大丈夫です.
(書き換えようとすると,元とは文字数も異なるためプログラミングの難易度が上がってしまいます)

【ヒント2】
例年,次のような書き方をしてナル文字まで出力してしまう間違いが見られます:
  while ( mail[i] != '\0' )
  {
    i++;
    printf("%c", mail[i]);
  }

これだと「ナル文字になったら終わり」と思われがちですが,
mail[i] != '\0' をチェックした後に i++; を実行しているので mail[i] がナル文字になっている場合でも出力してしまうので間違いです.i++;printf の後に行わなければなりません.

  • 【プログラムの実行結果】(その1)赤字は実行時にキーボードから入力する内容
    ※記号や空白も含めて,実行例と全く同じであることを必ず確認せよ.
    例年,==> の部分で @ をそのまま出力してしまうミス(i++; の実行忘れが多く見られます.
メールアドレスを入力してください:
aman@ehime-u.ac.jp
アドレスは aman@ehime-u.ac.jp (18 文字)
==> <aman>(at)[ehime-u.ac.jp]
  • 【プログラムの実行結果】(その2)赤字は実行時にキーボードから入力する内容
    ※最後に改行(\n)を入れ忘れていないか注意せよ
メールアドレスを入力してください:
aman.hirohisa.mm@ehime-u.ac.jp
アドレスは aman.hirohisa.mm@ehime-u.ac.jp (30 文字)
==> <aman.hirohisa.mm>(at)[ehime-u.ac.jp]
  • 【プログラムの実行結果】(その3)赤字は実行時にキーボードから入力する内容
メールアドレスを入力してください:
j520987x@mails.cc.ehime-u.ac.jp
アドレスは j520987x@mails.cc.ehime-u.ac.jp (31 文字)
==> <j520987x>(at)[mails.cc.ehime-u.ac.jp]

【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
実行の画面出力が上の例と違うきちんと確認していない).
 例えば @ が表示されてしまっている等.
■ printf で 1 文字だけ表示させるのに %c ではなく %s を指定してしまっている.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


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


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

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