strtok() 関数はどのように機能しますか?
を使用して文字列を分割するには strtok() 、まずそれがどのように機能するかを理解する必要があります。の strtok() 区切り文字に到達するまで、入力文字列を 1 文字ずつ読み取ります。区切り文字が見つかったら、 strtok() これをヌル文字「\0」に置き換えて、元の文字列を効果的に 2 つの部分に分割します。次に、文字列の最初の文字へのポインターが関数によって返されます。の strtok() 関数の構文は次のとおりです。
ストク ( チャー * 力 、 定数 チャー * 私は共有します ) ;の strtok() 関数は 2 つの引数を取ります。トークン セットの最初のトークンへのポインターと、区切り文字を保持する文字列です。最後のトークンを分割した区切り文字の直後から始まる次のトークンへのポインターを返します。これ以上トークンがない場合は NULL を返します。
C プログラミングで Strtok() を使用して文字列を分割する方法は?
使い方の例はこちら strtok() 文字列を分割するには:
#include
#include
整数 主要 ( ) {
チャー 入力 [ ] = 「リナックス、ヒント」 ;
チャー * トークン ;
トークン = ストク ( 入力 、 '、' ) ;
その間 ( トークン != ヌル ) {
printf ( '%s \n ' 、 トークン ) ;
トークン = ストク ( ヌル 、 '、' ) ;
}
戻る 0 ;
}
上記の例では、最初に char へのポインターを宣言します。次に使用します strtok() 入力文字列をトークンに分割します。の最初の呼び出し strtok() 入力文字列と区切り文字列「,」の 2 つの引数を取ります。最初のトークン「Linux」は、 strtok() へのポインタとして返します . 次に、while ループを使用して入力文字列を反復処理します。 strtok() NULL ポインターを使用して、残りのトークンの分割を続行します。区切り文字列は、再び引数として渡されます strtok() 区切り文字を示します。
出力
Strtok() 関数の制限
1: 元の文字列を変更します
の strtok() 関数は文字列のコピーを返しません。代わりに、元の文字列を変更します。したがって、分割後に変更されていないバージョンの文字列が必要な場合は、呼び出す前に元の文字列のコピーを作成する必要があります。 strtok() .
2: 非同期
1つの重要な制限 strtok() 一度に 1 つの文字列でしか使用できないということです。つまり、複数の文字列を同時にトークン化するために使用することはできません。
3: 限られた容量
別の潜在的な制限は、 strtok() は、繰り返される区切り記号を処理する能力が限られています。たとえば、文字列の単語間に連続したスペースがある場合、 strtok() 単一の区切り文字として扱います。このようなケースに対処するには、別のアプローチを使用する必要があります。
結論
の strtok() function は、C プログラミングで文字列を分割するための非常に便利な関数です。入力文字列と区切り文字列を受け取り、入力文字列で見つかった最初のトークンへのポインターを返します。 strtok() は破壊的であるため、元の文字列の整合性を維持する必要がある場合は、代わりにその複製を作成することをお勧めします。方法がわかったので、どんな文字列も加工用に小さくカットできます。