2

100 行 512 列のテキスト ファイルがあり、各列はタブで区切られています。

row1    00  00  20  00  11  00  00  00  00  10
        00  11  00  55  77  00  00  70  21  00
        90  ...

各行を読み取り、配列の各列に値を格納したいと思います。

sscanfさらに500個の変数を作成する必要があるため、変数を使用して分離したくありません。
を使用するfgetsと、行全体を取得できますが、列をスペースで区切って配列に格納するにはどうすればよいですか?

ありがとう。

4

3 に答える 3

4

strtok_rの再入可能なバージョンであるを使用して、文字列の要素をトークンstrtokに分割できます。ループで呼び出し、各トークンを呼び出し、行の配列にトークンを追加できます。strtok_ratoi

strtok_rの使用パターンはとほぼ同じですがstrtok、トークナイザーの現在の状態を表す追加のパラメーターがあります。Regularstrtokは、その状態を静的メモリに保持し、関数を再入可能にしません。

const char *term = "\t\n\r "; // word terminators
char str[] = "quick brown fox jumps over the lazy dog";
char *state; // Invocation state of strtok_r
char *tok = strtok_r(str, term, &state); // First invocation is different
while (tok) {
        printf("%s\n", tok);
        tok = strtok_r(NULL, term, &state); // subsequent invocations call with NULL
}
于 2012-05-22T23:03:57.997 に答える
1

タブ区切り文字付きの文字列トークナイザーを使用できると思います。これがです。

于 2012-05-22T23:03:37.950 に答える
1

strtokを使用できます

http://www.cplusplus.com/reference/clibrary/cstring/strtok/

各単語を繰り返します

于 2012-05-22T23:04:00.073 に答える