練習 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 上でインデントを自動で揃える作業をやっていない).
← [ 練習1 (p0901a.c) ]
ミスが無いことを確認したら次の問題へ → [ 練習3 (p0903a.c) ]