質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

1回答

3452閲覧

C言語の正規表現でメールアドレスがある行だけを表示したい。

Nakiryu-Leo

総合スコア7

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

0クリップ

投稿2016/06/14 06:53

編集2016/06/14 07:43

###前提・実現したいこと
下記のように定義されたメールアドレスを出力するプログラムを作成する。
・「名前@ドメイン」というパターンのメールアドレスのみ扱う。
・名前に使っている文字は、小文字、大文字、数字、ピリオド、ハイフン、下線だけである。
(例)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言語の正規表現

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jm1156

2016/06/14 07:02

なにがわからなくて、いまどういうプログラムを組んでいるのかソースを書いてください。
guest

回答1

0

ベストアンサー

提示されているコードを見ると、正規表現自体を作りたいように見えますが、たぶん違いますよね。
(regcomp関数を作ろうとしている)
regex.hを利用して正規表現による検索をしたいのですよね。
ググればサンプル(一例)は山ほどありますので、まずは自力で実装してみましょう。
その上でわからないところを質問すると良いと思いますよ。

投稿2016/06/15 01:15

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Nakiryu-Leo

2016/06/15 04:14

回答ありがとうございます。 早速取り組んでみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問