C言語関係掲示板

過去ログ

No.611.2バイト文字を抽出条件に

[戻る] [ホームページ]
No.5853

2バイト文字を抽出条件に
投稿者---苗(2003/04/17 22:02:16)


こんばんは、はじめまして。
苗と申します。文系人の癖にプログラムを組んでたりします。
以後、よろしくお願いたします。
ところで、質問なのですが。
テキストファイルを読み込んで、ある指定の条件と一致するデータのみを表示させたいのですが、どうしたらよいのでしょうか?

テキストデータはこんな形です。
<E:\\kaisya\\syain\\meibo.txt>
01,青池赤司,東京都,男,003-111-3333,営業G
02,猪口沙耶,大阪府,女,012-123-4567,総務G
03,加藤義雄,京都府,男,123-456-7890,技術G
04,狭山薫,神奈川県,女,135-792-4680,総務G
05,中山新次郎,京都府,男,245-789-0234,営業G

この中からたとえば、女性だけを表示するにはどうしたらいいでしょうか?
1文字ずつ比較しようにも、表示の条件となる対象が2バイト文字ですし・・・・。
構造体に入れようにも、上手く入ってくれず、1日中PCとにらめっこしていました。
申し訳ございません。どなたかよろしくおねがいいたします。

No.5854

Re:2バイト文字を抽出条件に
投稿者---かずま(2003/04/17 22:45:28)


#include <stdio.h>
#include <string.h>

int main(void)
{
    char buf[1024];

    while (fgets(buf, sizeof buf, stdin))
        if (strstr(buf, ",女,")) fputs(buf, stdout);
    return 0;
}
標準入力ですから、コマンドラインで、<e:\kaisya\syain\meibo.txt を
付けてくださいね。

No.5855

Re:2バイト文字を抽出条件に
投稿者---TDa(2003/04/17 22:46:43)



>この中からたとえば、女性だけを表示するにはどうしたらいいでしょうか?
>1文字ずつ比較しようにも、表示の条件となる対象が2バイト文字ですし・・・・。
>構造体に入れようにも、上手く入ってくれず、1日中PCとにらめっこしていました。
とりあえず構造体にうまく入れ込こむ部分は宿題としてstrcmpをつかって比較すればいいでしょうね。

No.5859

Re:2バイト文字を抽出条件に
投稿者---苗(2003/04/18 03:13:11)


申し訳ございませんが、コマンドラインについてもう少し詳しく教えてもらえませんでしょうか?
手元にある参考書などをみても、どれも同じようなことしか書いていなくて、よくわかりません。
大体どの本も
<pre>#inclde<stdio.h>
void main(int argc,char *argv[])
{
printf("name:%s\n",argv[0]);
printf("adress:%s\n",argv[1]);
}
</pre><br>
としか書いていなくて、基本すらよく理解できません。なのでもちろんのこと、今回のケースでどのように応用したらいいのかもわからないのです。
どなたか、詳しいご講義の程、よろしくお願い致します。

それと、"stdin"・"stdout"はキーボードで何か新規に文字を入力するのでしょうか?
そうではなくて、もともと存在するファイルを開いて読み込み、その七から一部のデータを抽出する、という感じなのですけども。

重ね重ねお手数おかけしまして本当にすみませんが、よろしくお願いします。

No.5861

Re:2バイト文字を抽出条件に
投稿者---ともじ(2003/04/18 09:20:52)


おはようございます。

>申し訳ございませんが、コマンドラインについてもう少し詳しく教えてもらえませんでしょうか?

ここのホームページでもコマンドラインについては扱っているので
参考にしてもらえるとうれしいです。なお、わかりづらい点など
ありましたら教えていただけますか。
http://www9.plala.or.jp/sgwr-t/c/sec11-4.html

>それと、"stdin"・"stdout"はキーボードで何か新規に文字を入力するのでしょうか?
>そうではなくて、もともと存在するファイルを開いて読み込み、その七から一部のデータを抽出する、という感じなのですけども。

stdin、stdoutについてはこちらです。
http://www9.plala.or.jp/sgwr-t/lib/fflush.html#stdio

かずまさんご提示のプログラムにtest.cという名前を付けて
test.exeという実行形式を作り、苗さんが用意した
e:\kaisya\syain\meibo.txtファイルから"女"のレコードを
取り出すには、
C:\>test <e:\kaisya\syain\meibo.txt
とコマンド入力します。

このホームページ索引もあります。ご利用ください。(^^)
http://www9.plala.or.jp/sgwr-t/c/sakutop.html