練習 [9] 文字列(2/5)

練習 2(提出プログラム名:p0902a.c)

まず,このプログラム(p0902a.c)をダウンロードしなさい.

このプログラムではメールアドレス(最大 SIZE-1 文字と仮定している)を読み込み,
アドレス全体とその文字数を出力し,さらにはローカル部(@より左の部分)も出力している.

これを編集し,次の 2 つの動作も実行するプログラムに仕上げなさい.
【編集すべき内容】
ローカル部を出力した後に,その文字数も出力する.
②さらに,メールアドレスのドメイン(@よりも右側部分)とその文字数も出力する.

【注意】
マクロ SIZE の定義部分以外に 100 (や 99, 98 といった関係する数字)を直接書いてはいけません.
また,C 言語には文字列の文字数を調べてくれる strlen という関数が標準ライブラリ関数として用意されているが,ここではこれを使ってはいけません.

【ヒント】
編集前のプログラムでは,最後の while 文による繰り返しが終わった時点で mail[i] == '@' の状態になっています.つまり,この i を +1 すると(i++; を実行すると),mail[i]@ の 1 つ右の文字ということになりますので,これがドメインの先頭文字に該当します.

  • 【プログラムの実行例】(その1)赤字は実行時にキーボードから入力する内容
    ※出力の最後に改行(\n)を入れ忘れないよう注意せよ
メールアドレスを入力してください:
aman@ehime-u.ac.jp
アドレスは aman@ehime-u.ac.jp (18 文字)
ローカル部は aman ですね (4 文字)
ドメインは ehime-u.ac.jp ですね (13 文字)
  • 【プログラムの実行例】(その2)赤字は実行時にキーボードから入力する内容
メールアドレスを入力してください:
aman.hirohisa.mm@ehime-u.ac.jp
アドレスは aman.hirohisa.mm@ehime-u.ac.jp (30 文字)
ローカル部は aman.hirohisa.mm ですね (16 文字)
ドメインは ehime-u.ac.jp ですね (13 文字)
  • 【プログラムの実行例】(その3)赤字は実行時にキーボードから入力する内容
メールアドレスを入力してください:
k520987x@mails.cc.ehime-u.ac.jp
アドレスは k520987x@mails.cc.ehime-u.ac.jp (31 文字)
ローカル部は k520987x ですね (8 文字)
ドメインは mails.cc.ehime-u.ac.jp ですね (22 文字)

【過去にあったミス(減点となり,やり直しを命じられる)】
3 種類の実行例を確認せずに提出してしまっている.
 例えば,誤って @ を文字数に含めていたり,ドメインとして @ も表示させてしまっている.
■ 文字数をカウントする変数を 0 に初期化せずに使ってしまっている.
ナル文字より後ろも表示させてしまい文字化けしている.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


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