0

私は現在コードの一部に取り組んでいますが、この問題に取り組む方法がわかりません。状況を説明します:

このコードの目的は、Cで「動的」行列を作成することです。「fgets」を使用してchar配列を取得すると、コードは最初の行をchar配列として解釈します。ただし、現時点で最初の行にのみ関心がある行が他にもあります。他のすべての行には、保存する必要のある情報が含まれています。

最初の行だけに興味があるのは、以下のすべての情報に合わせるために必要なマトリックスの大きさに関する情報が含まれているためです。情報はパターンで提供され、常にx、yの形式になります。xとyは互いに拘束されていません。たとえば、xはyの10分の1以下または大きい可能性があります。また、行上の情報の場所は設定されていません。画面の右側または左側に浮いている可能性があります。

Javaの正規表現のように、情報をフィルタリングするために使用できる形式はありますか?たとえば、最初の行で「、」を探し、見つかったら、「、」から最初の空白までの右側と左側を確認し、両方の値を変数に格納します。

例:

[                   14,10            ]

結果は次のようになります。

int rowSize = 14;
int columnSize = 10;
4

1 に答える 1

1

最初の有効な小数点文字を検索しないのはなぜですか?

#include <ctype.h>
#include <stdlib.h>
#include <stdio.h>

char *first_digit(const char *s)
{
    while (!isdigit(*s)) s++;
    return s;
}


int main()
{
    const char *line = "[             14,      10        ]";
    int n, k;

    const char *first = first_digit(line);
    const char *end;
    n = strtol(first, &end, 10);

    const char *second = first_digit(end);
    k = strtol(second, NULL, 10);

    printf("n, k = %d, %d\n", n, k);
    return 0;
}
于 2013-02-22T23:54:38.927 に答える