2013-06-29 128 views
1

如何比較Forth中的兩個字符串?如何將字符串與Forth中的字符串進行比較?

而且我可以在if語句中執行它,還是應該創建一個輔助布爾變量?這是我迄今爲止的代碼。順便說一下,[email protected]是從用戶那裏獲得輸入。

: var 
compile: VARIABLE 
complile: ; 

: lock 
compile: var realPass$ 
compile: realPass$ "password" ! 
compile: ." Enter Password: " 
compile: var pass$ 
compile: [email protected] pass$ ! 
compile: var match 
compile: realPass$=pass$ match ! Unknown token: realPass$=pass$ 
+1

user2302197:你用的是什麼Forth的味道? –

回答

3

要比較字符串的ANSI字是COMPARE (c-addr_1 u_1 c-addr_2 u_2 -- n)。如果比較的兩個字符串相等,n等於0。一般來說,Forth避開顯式變量而傾向於使用堆棧,因此直接使用IF而不需要額外的變量就沒有問題。

: PWCHECK 
    COMPARE 
    IF ." Entry denied." 
    ELSE ." Welcome friend." THEN 
    CR 
; 

S" Hello" ok 
S" Goodbye" ok 
PWCHECK You are not wanted here. ok 
S" Howdy" ok 
S" Howdy" ok 
PWCHECK Welcome friend. ok 
相關問題