###前提・実現したいこと
下記のように定義されたメールアドレスを出力するプログラムを作成する。
・「名前@ドメイン」というパターンのメールアドレスのみ扱う。
・名前に使っている文字は、小文字、大文字、数字、ピリオド、ハイフン、下線だけである。
(例)yamada、Taro.Yamada、Nihon_Tokyo-Ueno。
・ドメインは以下の2種類が存在する。
ードメイン名:英小文字で始まり英小文字と数字とハイフンからなる文字列(1個以上、いくつでも)をピリオドでつないだもの。
(例)abc.defghijk-lm.no.jp、localhost、tel012-345-6789.jp
ーIPアドレス:3ケタ以下の十進数をちょうど4個だけピリオドでつないだもの。
(例)172.16.200.23、211.2.654.38。
検索対象のテキストファイル(複数)はあるディレクトリの下に格納されているので、引数としてそのディレクトリ名を指定できるようにしてください。ファイル名は256バイトを超えません。テキストファイルに含まれる行の長さは256バイトを超えません。メールアドレスが見つかった行ごとに、テキストファイル名と行番号とその行を以下のフォーマットで出力して下さい。ファイル名、行番号、行の内容の間は空白文字1個で区切って下さい。行番号が4294967295(unsigned longの最大値)を超えることはありません。
以下のようにコマンドラインに「調べたいディレクトリ名」をして実行するプログラムにしてください。
./a.out 調べたいディレクトリ名
###発生している問題・エラーメッセージ
エラーメッセージ
###ソースコード(イメージ)
#include <stdio.h>
#include <regex.h>
int regcomp(regex_t *preg, const char *regex, int cflags);
int regcomp(regex_t *preg, const char regex, int cflags)
{
/ ディレクトリを開く /
/ ディレクトリからファイル名を取得 /
while(?){
/ ファイルを開く /
/ ファイルから1行読み込み */
while(?){
/ *正規表現にマッチする /
if("\@"){
/ ファイル名を表示 /
printf(?);
}
}
/ ファイルを閉じる /
}
/ ディレクトリを閉じる /
/ 正規表現をフリーする */
###試したこと
課題に対してアプローチしたことを記載してください
###補足情報(言語/FW/ツール等のバージョンなど)
C言語の正規表現
回答1件
あなたの回答
tips
プレビュー