作者craig08 (小佑)
看板EE_DSnP
標題[問題] 關於checkOptCmd
時間Tue Nov 16 21:02:58 2010
如果在getCmd裡面 我把 myStrNCmp 的第一個參數傳入
command的mandatory part + optional part
第二個參數是使用者打的cmd 第三個參數是mandatory part的長度
(這樣會有什麼問題嗎? 測試到現在好像都是對的)
這樣好像就可以不用用到checkOptCmd這個函數?
那如果沒用到它的話可以不要寫它嗎XD?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.249.28
1F:推 TommyKSHS:第三個參數應該要是 使用者輸入的 cmd 的長度? 11/16 21:12
2F:→ TommyKSHS:打打看 hell 會不會出現 help 的訊息 XD 11/16 21:13
3F:→ craig08:打hell會出現錯誤 目前表現還算理想 11/16 21:25
4F:→ michael0728n:how about helpp? 11/16 22:17
5F:→ craig08:也會出現錯誤 11/16 22:17
6F:→ michael0728n:好像真的可以耶 找不到缺陷XD 11/16 22:19
7F:推 TommyKSHS:但是若照原文說的 helpp 只會比對前三個字有無正確吧? 11/16 22:21
8F:→ craig08:會比對到最後一個p然後傳回!0因為myStrNCmp是比較到s2沒有 11/16 22:22
9F:推 TommyKSHS:但 myStrNCmp 的 for loop 只有比對到 s1 結束的時候吧 11/16 22:48
10F:→ TommyKSHS:所以 helpp 應該只會比對到第一個 p ? 11/16 22:51
11F:→ michael0728n:對然後就會回傳s1跟s2長度差 11/16 22:51
12F:→ michael0728n:如果不一樣長就不是回傳0了 回傳0才是match 11/16 22:52
13F:→ craig08:恩對樓上正解 不好意思上面講錯了 11/16 22:54
14F:推 BBSealion:我好像一直都是用這樣搞的 想不通怎麼用check就不...XD 11/16 23:01
15F:推 ric2k1:好像是ㄟ... 用 myStrNCmp 就可以不用寫 checkOptCmd()了.. 11/16 23:07
16F:推 TommyKSHS:但感覺如原 PO 所述 strNcmp 不就失去了 n 的意義了嗎 11/16 23:10
17F:推 TommyKSHS:因為strNcmp 不是應該只比對前 n 個字元是否相同而已? 11/16 23:12
18F:→ ric2k1:不過你還是要傳對的 string 給 _cmdMap 去檢查哦! 11/16 23:12
19F:→ craig08:所以因為此題加個my功能就變強大了 不用可惜XD 11/16 23:16
20F:推 ric2k1:嗯,所以才叫 "my"StrNCmp(),而且與 strncmp 不同的是, 11/16 23:18
21F:→ ric2k1:它做 case insensitive 的比較... 11/16 23:18
22F:→ ric2k1:我有點忘了我當初寫這個 function 的初衷是什麼... 應該 11/16 23:19
23F:→ ric2k1:就是要做 command 的 compare 的吧! 11/16 23:20
24F:推 ric2k1:所以如果你確定可以不用寫 checkOptCmd() 就不寫吧! 11/16 23:20
25F:推 TommyKSHS:真囧 我一開始就預設他只是 case-insensitive 的strncmp 11/16 23:21
26F:→ craig08:非常感謝教授和同學們的回應 11/16 23:24
27F:推 ric2k1:[Disclaimer] 樓上還是要多測一下,我只是說看起來是對的 11/16 23:26
28F:→ ric2k1:我也看不出有甚麼問題就是了... 11/16 23:27
29F:→ craig08:嗯好 知道了謝謝 11/16 23:28