• ベストアンサー

Cコンソールアプリ3

yymmddhhmmss.txt(例.060125162541.txt)という形式のテキストファイルが 実行ファイルの直下の「txt」フォルダにたくさんあり、 txtファイルには下記のように情報があります。 172.20.1.31,2879,207.46.248.109,80 ...GET /cgi-bin/~ref+ HTTP/1.1..Accept: */*..Referer: http:w ww.j-motto.info/~.html...Accept-Langua: ja..Accept-Encording: gzip, de flate..User-Agent: Mozila/4.00 (compatible~NT5.0)..Host: ad.jp.ap.vali ecommerce~......... 1行目には「自IP」「自ポート」「相手IP」「相手ポート」がカンマ区切りで、 下の行にはパケット情報が書き込まれています。 YYYYMMDDの形で日付入力を待ち、それに該当する日付のファイルがあれば読み込んで、 (06/01/25) [Get]  /cgi-bin//cgi-bin/~ref+ HTTP/1.1   [Referer]  http:www.j-motto.info/~.html [User-Agent]  Mozila/4.00 (compatible~NT5.0) [Host]  ad.jp.ap.valiecommerce~ のように表示させたいのです。 fscanf()等で読み込んで範囲を指定して一部だけを 表示させることは可能でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

1.ファイルのリストを作る 2.日付を入力させる 3.リストから一致するものを探す 4.そのファイルの内容を表示 という流れになりましょうか。 すべてのファイルで一行目の構造が同じなら、一行目をfgets()するなりして、strtok()で切り出すと良いかもしれません。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

fscanfのみで部分部分を読み込むのは困難ではないかと思います。 strstrなど、キーとなるワードを検索して、自分で切り出すような処理になると思いますが、 そうしたマッチング処理は、正規表現が扱える言語(例えば、Perl)を使うと楽できます。 標準ライブラリでは、ありませんが、Cでも扱える正規表現ライブラリ (GNU regex.c とか)もあるので、そういうものの利用も考えると良いかも知れません

関連するQ&A