C言語関係掲示板

過去ログ

No.954 文字列に2or3個含まれる数値を取り出す

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

文字検索について
投稿者---kobata(2004/01/28 00:27:15)


LUT INPUT TERMINAL=        37 22

と言う行から37と22をそれぞれ変数に格納したいのですが、
どうのようにしたらよいか教えてください。
よろしくお願いします。


No.12221

Re:文字検索について
投稿者---かずま(2004/01/28 02:29:28)


    char buf[1024];  int a, b;

    while (fgets(buf, sizeof buf, stdin))
        if (sscanf(buf, " LUT INPUT TERMINAL =%d%d", &a, &b) == 2)
            printf("%d %d\n", a, b);


No.12222

Re:文字検索について
投稿者---kobata(2004/01/28 03:31:30)


>
    char buf[1024];  int a, b;

    while (fgets(buf, sizeof buf, stdin))
        if (sscanf(buf, " LUT INPUT TERMINAL =%d%d", &a, &b) == 2)
            printf("%d %d\n", a, b);

ありがとうございました。

しかし、実際は、
LUT NUMBER=  0
LUT INPUT TERMINAL=			37 22 
LUT OUTPUT TERMINAL=			38

LUT NUMBER=  1
LUT INPUT TERMINAL=			31 29 35 
LUT OUTPUT TERMINAL=			37

(以下続く)

のようになっており、LUT INPUT TERMINALが
2個と3個の場合があります。
2個と3個はランダムに出現します。
どのように2個と3個の場合を場合分けしたら良いでしょうか。
よろしくお願いします。



No.12223

Re:文字検索について
投稿者---YuO(2004/01/28 08:06:47)


>のようになっており、LUT INPUT TERMINALが
>2個と3個の場合があります。
>2個と3個はランダムに出現します。
>どのように2個と3個の場合を場合分けしたら良いでしょうか。

3個のつもりでsscanfを呼び出して,その戻り値を見て判断すればよいです。

No.12230

Re:文字検索について
投稿者---かずま(2004/01/28 11:46:59)


    char buf[1024];  int k, m = 0, n, i1, i2, i3, o;

    while (fgets(buf, sizeof buf, stdin)) {
        k = sscanf(buf," LUT INPUT TERMINAL =%d%d%d", &i1, &i2, &i3);
        if (k == 2 || k == 3) m = k;
        else if (sscanf(buf," LUT NUMBER =%d", &n) == 1) ;
        else if (sscanf(buf," LUT OUTPUT TERMINAL =%d", &o) == 1) {
            switch (m) {
            case 2: printf("n=%d, i1=%d, i2=%d, o=%d\n", n, i1, i2, o); break;
            case 3: printf("n=%d, i1=%d, i2=%d, i3=%d, o=%d\n", n, i1, i2, i3, o);
            }
            m = 0;
        }
    }