if( szStr[i] == '_' && szStr[i+1] == 'L' && szStr[i+2] == 'e' &&
szStr[i+3] == 'v' && szStr[i+4] == 'e' && szStr[i+5] == 'l'&&
szStr[i+6] == '_' )
上の表記をもっと見やすくする方法、関数などは無いでしょうか?ありましたらその使用方法も教えてください。
これだとどうしても長い文字列の場合間違えやすいので。
// C言語
#include <string.h>
const char* str = "_Level_";
if( strcmp( szStr, str ) == 0 )
; // do something
> 上の表記をもっと見やすくする方法、関数などは無いでしょうか?
> ありましたらその使用方法も教えてください。
> これだとどうしても長い文字列の場合間違えやすいので。
'\0'で終わっているのか不明なんですが……(sz〜ってくらいだから終わっている筈でしょうが)
strncmp(szStr+i, "_Level_", 7) とか、
memcmp(szStr+i, "_Level_", 7) とかでしょうか?
# 7ってマジックナンバーがなんかイヤかも。
ちなみに、上記の場合だとszStrに入っているのが"Character_Level_Down"とか
そんなのでもお構いなしに判定されますがいいんですかね?
szStrが'\0'で終わっているなら、strstrで検索するとかあると思いますが。
monkeyさん、返答ありがとうございます。
szStrの最初からならこの方法でよいそうですが、
自分は多くの文字が入っている szStr[100] からその特定の文字を探し出したら処理をする。というものを作っているので・・・。もしそのようなときにはどうすればいいのでしょうか?
自分の処理の方法:
for(i=0;i<StrNum; i++)
{
if( Str[i] 〜 Str[i+6]に"_Level_"が入っていた場合)
// 処理
}
瀬戸っぷさんも返答ありがとうございます。
なんかmonkeyさんに返事を書いている間に書き込まれちゃったみたいです。
瀬戸っぷさんのstrncmp()などは具体的にどのように使用すればいいのでしょうか?
szStrは[500]の配列なので。
できました!!ありがとうございます。
コードも(少しだけど)すっきりしました。瀬戸っぷさん、monkeyさん、
ありがとうございました!!
ツイート | ![]() |