これを効果的に行う方法がわからないことに本当に驚いています。sscanfと組み合わせたstrstrを試しましたが、他の言語での経験に基づいて期待したとおりに機能するものはないようです。
「 ABCDEFGHIJKBEGINTheMiddleENDLMNOPQRS」の文字があります。「 BEGINTheMiddleEND 」が文字列のどこにあるかわかりません。 「 BEGIN」と「END 」の出現箇所を見つけてその間にあるものを取得することにより、 「 TheMiddle 」に等しい文字で終了したいと思います。
これを達成するための最も効率的な方法は何ですか(検索とサブストリング)?
ありがとう!
-回答に基づいて編集-
私はこれを試しました:
char *searchString = "ABCDEFG HIJ K BEGINTheMiddleEND LMNO PQRS"
char *t1, *t2;
t1 = strstr(searchString, "BEGIN");
t2 = strstr(t1, "END");
しかし、それは私にはうまくいかないので、ポインタの観点からは何かが間違っているに違いありません。Strstrは2つの引数しか受け取らないので、前のポインターから始めて何を意味するのかわかりません。また、これらのポインタはstrposが返すような整数値ではなく、文字ポインタであるため、これらのポインタを使用して部分文字列を作成する方法もわかりません。
再度、感謝します。
-最終コードで編集-
これに当たる他の人のために、最終的な、機能するコード:
char *searchString = "ABCDEFG HIJ K BEGINTheMiddleEND LMNO PQRS"
char *b = strstr(searchString , "BEGIN");
char *e = strstr(b, "END");
int offset = e - b;
b[offset] = 0;
ここで、「b」は「BEGINTheMiddle」と等しくなります。(これは、この場合に必要なものです)。
みなさん、ありがとうございました。