→ Lipraxde: 寫成狀態機一個個 char 比過去? 09/28 23:54
→ Lipraxde: 怎麼寫其實沒差啦,不過這種東西可能要多加些註解,不 09/28 23:56
→ Lipraxde: 然看起來像是在搞 obfuscation... 09/28 23:56
推 kingofsdtw: 丟git check sum 09/29 00:07
→ encorek22554: 可以參考leetcode.165 09/29 01:34
推 LPH66: 你其實可以在 while 迴圈裡用兩個變數暫存兩個部份的數字 09/29 04:42
→ LPH66: 這樣同樣的呼叫不用重覆進行; 因為這種東西編譯器很難知道 09/29 04:43
→ LPH66: 你這兩次呼叫其實是同一個東西 09/29 04:43
→ loveme00835: 為了比較字串內容, 對字串內容做了什麼事你知道嗎? 09/29 09:04
推 appleway: sscanf(v_str, “%d.%d.%d”, &major, &minor, &post); 09/29 15:39
→ gn00618777: 回Liprx大,你一個一個char去比較,那還未parse到'.' 09/29 22:25
→ gn00618777: 到的char該存到哪? 09/29 22:25
→ gn00618777: 回LPH66大,用兩個變數去存? 請問你是一個一個char 09/29 22:27
→ gn00618777: 去parse嗎? 還是一樣用strtok 呢? 09/29 22:28
→ gn00618777: 回loveme大,字串的. 會被替換成\n 09/29 22:29
→ gn00618777: 回appleway大,你這方法滿酷的,但要是不只兩個小數點 09/29 22:30
→ gn00618777: 就無法比完全部了 09/29 22:30
→ petercoin: apple大應該是因為你們的規定所以寫這樣給你啦,如果 09/29 23:03
→ petercoin: 有三個小數點就寫三次阿。不然就用“.”來split之後看 09/29 23:03
→ petercoin: 陣列長度有多少再轉成數字比對也行 09/29 23:03
→ loveme00835: 考慮到字串長度格式還有比較方式的不同, 寫成可客製 09/29 23:15
→ loveme00835: 化複用性會高一些 09/29 23:15
→ Lipraxde: 不懂要存什麼。應該有兩個 char* 指到當下比到哪就可以 09/29 23:54
→ Lipraxde: 了吧? 09/29 23:54
→ Lipraxde: 仔細想想好像也不用狀態機 @@ 09/29 23:54
推 LPH66: 我說的是 strtoul 的呼叫結果 09/30 16:34
→ gn00618777: 不解........... 我廢= = 09/30 23:12
→ gn00618777: 你是說只要 if else 對不對 09/30 23:15
→ gn00618777: 阿我知道了,參考strcmp source code 他只要相減 09/30 23:16
→ gn00618777: return strtoul(a) - strtoul(b) 就可以了 09/30 23:16
推 LPH66: OK, 我再講清楚一點好了: 10/01 01:21
→ LPH66: int v1 = strtol(...); int v2 = strtol(...); 10/01 01:22
→ LPH66: if(v1 > v2) {...} else if(v1 < v2) {...} else {...} 10/01 01:22
→ LPH66: 你同一個函數寫兩次很有可能實際上就呼叫兩次 10/01 01:23
→ LPH66: 至於 return 相減結果這個寫法你再仔細考慮清楚一次 10/01 01:24
→ LPH66: 不是說你錯, 但你要仔細確定有沒有漏掉的地方 10/01 01:24
→ gn00618777: 歐歐 的確不用再strtoul。至於第二點我的確也少考慮 10/02 09:07
→ gn00618777: 少考慮了當某一個為NULL而另個為非NULL的情況 10/02 09:08
→ gn00618777: 回encorek22554大,感謝你提供的資訊 10/02 09:22