17

C文字列に1つの文字が含まれているかどうかを確認したいと思います。この文字はLinuxのパイプラインに使用されます(実際には、、、、'|' もチェックしたいと思い'<'ます)。'>''>>''&'

Javaではこれを行うことができます:

String.indexOf()

しかし、文字列全体(文字列)をループせずに、Cでこれを行うにはどうすればよいchar*ですか?

4

2 に答える 2

25

文字を検索する必要がある場合は、次のstrchrような関数を使用できます。

char* pPosition = strchr(pText, '|');

pPositionNULL指定された文字が見つからない場合になります。例えば:

puts(strchr("field1|field2", '|'));

「|field2」を出力します。は前方検索strchrを実行することに注意してください。後方検索には、を使用できます。ここで、(例を示すために)次のような文字列があると想像してください: "variable:value|condition"。次のコマンドで値フィールドを抽出できます。strrchr

char* pValue = strrchr(strchr(pExpression, '|'), ':') + 1;

文字列内の文字のインデックスが必要な場合は、SOのこの投稿を参照してください。あなたもそのようなものが必要かもしれませIndexOfAny()ん、ここでこれを使用するSOに関する別の投稿strnspn

代わりに、文字列を探している場合は、次のstrstrような関数を使用できます。

char* pPosition = strstr(pText, "text to find");
于 2012-05-18T11:44:49.917 に答える
4

strchrあなたの友だちです。

char *strchr(const char *s, int c);

この関数は、が指す文字列内でstrchr最初に出現するc(に変換される)を検索します。chars

このstrchr関数は、検索された文字へのポインタを返します。文字列に文字が含まれていない場合は、nullポインタを返します。

そしてもちろん、関数は最悪の場合(Java関数がおそらくそうするように)文字列全体をウォークスルーする必要があります。

于 2012-05-18T11:45:56.560 に答える