文字列の比較 †
HSPでは文字列の比較は等しいかどうかしかサポートされていないため、「 HSP 」と「 PHS 」はどちらが辞書順で先に来るのか、
などを比較演算子で比較できません。
というわけでここで比較関数を作っていきます。
【関数名】 strcmp
【書 式】 strcmp( p1 , p2 )
【機 能】 二つの文字列を受け取り辞書順でどちらが先にくるかを判定する。
【戻り値】 以下のいづれかの値を返します。
p1 = p2 ならば 0
p1 > p2 ならば 正数を返し p1 の方が辞書順で後にくる。
p1 < p2 ならば 負数を返し p1 の方が辞書順で先にくる。
【補 足】 0以外の戻り値は先頭から数えて一番最初に一致しなかった文字コードの差になります。
自分なりに考えたんだけど、下記ではダメなの?
って、聞くだけだから消してもいいよ。 by hiroki
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
| #module "mod_string_operation"
#defcfunc _strcmp str _s1 , str _s2
s1=_s1 : s2=_s2
repeat
c1=peek(s1,cnt) : c2=peek(s2,cnt)
if (c1=0) | (c2=0) : break
if c1 ! c2 : return c1-c2
loop
if (c1=0) & (c2=0) : return 0
if c1>0 : return 1
return -1
#global
|
1
2
3
4
5
6
7
8
9
10
11
12
|
| #module
#defcfunc strcmp str p1, str p2
s1 = p1: s2 = p2
repeat
c1 = peek(s1,cnt)
c2 = peek(s2,cnt)
if (c1 ! c2) | c1=0: break
loop
return c1-c2
#global
mes strcmp("ab","abb")
|