• 締切済み

C言語 正規表現 regex.h 利用できない

c言語を用いてCSVファイルの中に書かれている数字を集計するプログラムを作っています。 そこで正規表現(ワイルドカード)を使いたいと思いました。 調べた結果、regex.hのヘッダファイルを読み込むことで、正規表現を使用できる関数があることがわかりました。 しかし、regex.hをダウンロードしたのですがコンパイルエラーが起きてしまいます。 うまくregex.hをダウンロードできていないか、もしくはヘッダファイルを入れる場所がおかしいかだと思います。 もし使われている方がいましたらご教授お願いします。 私が使っているパソコンはwindowsXPです。

みんなの回答

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.2

どんなコンパイルエラーが出ているのか掲示された方が早くないでしょうか? ライブラリも必要ですけど、規定の場所に格納しリンク対象にしておく必要がありますが。 # コンパイルエラーなのでライブラリはまだ関係ないかも知れませんが。

  • gon987
  • ベストアンサー率16% (53/313)
回答No.1

インクルードできる場所にヘッダファイル置いているか? includeでの<>と""囲むときの違いも理解してるか? >そこで正規表現(ワイルドカード)を使いたいと思いました。 それとそもそもの問題だけ正規表現とワイルドカードは別物だぞ。

fifth_ave
質問者

お礼

includeというフォルダにregex.hは置きました。 includeの意味も理解しています。 ワイルドカードと正規表現は違う意味でしたか。 すみません。 >そこで正規表現(ワイルドカード)を使いたいと思いました。 「それで正規表現を使いたいと思います。」に訂正します。

関連するQ&A

  • c言語 正規表現

    c言語でCSVファイルに書かれている数字を集計するシステムを作っています。 Excelでは「*」が正規表現ですが、c言語では正規表現はありますか? よろしくお願いします。

  • C#、Regex使用時の正規表現について

    ------------------------------------------------- おはようございます。 早速ですが質問させて頂きます。 現在、『C#でXMLファイルを読み込んで その中の文字を検索する』ということをしております。 ある行にXML表記で書かれた論理・比較演算子などがあり、 その演算子の数を制限させてみたいです。 ここで、演算子の数を数えるとき『MatchCollection』 を使用してカウントしているのですが、Regexの正規表現で "--"や"||"といった記号はどう検索させればよいのでしょうか。 例えば、インクリメントとデクリメントを検索しようとして Regex regex = new Regex("[--|++]"); のように書いてみても正しい数値が入っておりません。 まことに初歩の質問かもしれないので申し訳ないのですが、 どなたか方法をご存じの方がいらっしゃればご教示願いたいと思います。 宜しくお願い致します。

  • C言語 コンパイルできない "visa.h"読み込めない?

    C言語でコンパイルすると 「error LNK2019: 未解決のシンボル _viOpen@20 が関数_mainで参照されました」 というエラーが出ます。 この viOpen という関数は"visa.h"というヘッダファイルに入っており、コンパイラしたソースファイルはメーカーからダウンロードしたファイルをコピーしているので間違っていること考えにくいです。 "visa.h"ファイルはincludeフォルダに入れたのですが入れるだけではだめなのでしょうか? また、 viOpen の中身を見てみると ViStatus _VI_FUNC viOpen (ViSession sesn, ViRsrcname, ViAccessMode mode,ViUInt32 timeout, ViPSession vi); と書いてありました。 これだけでは分からないかもしれませんが予測程度で構いませんので教えて下さい。

  • ASP言語での正規表現の書き方

    if instr(hoge,"Android 4.2.2; ")>0 then 上記のifで4.2.2の数字が変わっても拾えるよう正規表現で記述したいです。 どう書けばよいですか? ASP言語で正規表現を使った事が無いので、使用できるのかも判りません。 宜しくお願い致します。

  • C言語でプロセスを処理するプログラムを考えています。

    C言語でプロセスを処理するプログラムを考えています。 popenを使ってプロセスを起動しようとしたですが、popenが未定義の関数とエラーが出てコンパイルできません。 ヘッダにstdio.hはおいてあります。 コンパイラはborlandを使用しています。 よろしくお願いします。

  • 正規表現 半角数字1から100

    .Net Framework のRegex.Replace で、半角数字1から100の範囲を正規表現で指定する方法を教えてください。 よろしくお願いします。

  • Cプログラミング内でのPostgreSQLの利用について

    Cプログラムでのデータベース接続が出来ない事で質問です。 現在C言語で書いたプログラムがありまして、今まではwindows上でCSVファイルから読み込んで、 新しいファイルに書き込むというような内容のプログラム作っていました。 それを今は OSをLINUXのRedhat(teratermからアクセス) 読み込むデータファイルをデータベース(Postgresql) にしてやっています。 何とかDBをインストールして、DBにCSVファイルをコピーした物を作る所までは出来ました。 その後CプログラムでDBを利用する時、色んな設定をしてやらなくてはいけないと思うのですが まずlibpq-fe.hというものをincludeして使うとは分かったのですが、これがまず見つかりません。 質問(1) OSの中のファイルを探す時にコマンドで# find ~ -name libpq-fe.hとやったのですが間違っていますか? ちなみにあるとしたらどこにそのヘッダーファイルはありますか? 質問(2) インストールした手順としては日本PostgreSQLユーザ会のサイトからソースをダウンロードしてコンパイル、インストールを行いましたが、調べるとrpmと言うものを使ってインストールした人が同じような内容で質問していて、develを入れないとヘッダーファイルが 入らないという記述がありました。 その事は何か関係がありますか? 質問(3) libpq-fe.hが必要と書きましたが、他にもlibpq.soやlibpq.hと書いてあったりしてそこの所もよく分かりません。 記述が足りなかったらすいません。 ヒントでも良いので宜しくお願いします。

  • 正規表現を教えてください。

    正規表現を教えてください。 C#で正規表現を用いた文字列検索を勉強中なのですが、うまくマッチさせることができません。教えていただけないでしょうか。 検索対象の文字列は下のようになります。 キーワード;値; 文字列中に該当するキーワードが存在する場合に、その値を取得するプログラムを考えています。しかし、私の正規表現では2つ目の「;」を検出してしまい、キーワードのみを取得することが出来ずに困っています。 見当違いの表記をしているとは思うのですがどなたかお助けください。 match = Regex.Match(line, "^(.*);"); C#初心者なものです。

  • 正規表現が解読できません。

    ツールが対象ファイルを認識する規則が正規表現で記載されているのですが、 正規表現について無知なため、解読することができずに困っております。 ネット等で検索し、[A-Z0-9]や{4,4}など部分的には解読することができたのですが・・・ FILE_COPY.REGEX1=<ABC>\t.+\\\\ABC(\\\\.*)?\\\\[A-Z0-9]{4,4}[0-9]{3,3}[A-Z0-9]+\\\\[A-Z0-9]{4,4}[0-9]{3,3}[A-Z0-9]+\\.gz FILE_COPY.REGEX2=<DEF>\t.*\\\\[^\\\\]*(?<\!\\.tar) FILE_COPY.REGEX3=<GHI>\t.+\\.xml\\.gz どなたかお時間のある方がいらっしゃいましたら、ご教示いただけないでしょうか。 どうぞよろしくお願いいたします。

  • C言語 CSVファイルの読み込み

    C言語でCSVファイルから数字を読み込み、それを計算するというプログラムを作りたいのですが、CSVファイルについて全く知識が無く、加えてCSVファイルを利用したプログラムを作るのが初めての為、勝手がわかりません。 まずCSVファイルというのは、 1.2,2.3,3.4 4.5,5.6,6.7 7.8,8.9,9.0 といった数字(文字列)をカンマで区切ったテキストファイルですよね? それをどのようなプログラムで読み込むのでしょうか? 例えば、上記の数字を読み込み、 a. 1.2+4.5+7.8=x b. 8.9-5.6-2.3=y c. 3.4*6.7*9.0=z と計算する場合のプログラムを教えていただきたいです。 よろしくお願いします。

専門家に質問してみよう