Cプログラミングでstrtok()で文字列を分割する方法は?

Cpuroguramingudestrtok De Wen Zi Liewo Fen Gesuru Fang Faha



文字列の分割 テキスト処理、データ分析、解析など、さまざまな理由で重要であり、C プログラミング言語には、このタスクを処理するためのさまざまな方法が用意されています。ただし、最も一般的な C 関数は、 文字列の分割 指定された区切り文字による複数のトークンへの変換は strtok() .ライブラリ関数であるため、文字列操作をサポートする標準 C ライブラリで使用できます。

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() は破壊的であるため、元の文字列の整合性を維持する必要がある場合は、代わりにその複製を作成することをお勧めします。方法がわかったので、どんな文字列も加工用に小さくカットできます。