2

私のプログラムでは、strtok を 2 回呼び出す必要があります。私が抱えている問題は、最初の strtok が内部の strtok を実行した後にループを再開できず、最初の文字のポインターを失うことです。

ここでさらに説明するには、例を示します。

メイン:

 tokens = strtok (stmt, ":");
        while (tokens != NULL) {
            convert_field(tokens);
            tokens = strtok (NULL, ":");
        }

私がするconvert_field機能で

tokens = strtok (sub_stmt, ".->//");
        while (tokens != NULL) {
            convert_field(tokens);
            tokens = strtok (NULL, ".->//");
        }
4

1 に答える 1

5

strtokは再入可能ではありません (つまり、前の実行が完了する前に関数を再度呼び出すことはできませんstrtok_r)。代わりに (再入可能) を使用する必要があります。

于 2012-04-20T10:47:41.710 に答える