Re: [wizs] 問題[玖]
看板mud_sanc (Sanctuary - 聖殿)作者laechan (小太保)時間13年前 (2012/10/31 17:59)推噓1(1推 0噓 0→)留言1則, 1人參與討論串2/2 (看更多)
※ 引述《justinj (黑旋風)》之銘言:
: 這個實在是沒法度解決..只好拿來問了
: 就是我想要判斷某個字串是不是這樣的形式 %dh%s時
: 我會用if(sscanf(str,"%dh%s",v,tmp)!=2)來判斷它
: 但是..如果我只想判斷一個..像%dh的形式時 是沒有用的
: 例如 str = "4444h"...那用上敘的判斷來寫的話 sscanf(str,"%dh",v) 會等於1
: str = "aaaa"時還是一樣會等於1
sscanf 無法解決的問題,我一般會用 str[a..b] 再搭配
strlen(str) 的方式解決,偶爾用一下 atoi。
例如說當 str = "4444h" 時,atoi(str) 是等於 4444的
,它的原理就是它只取前幾個是整數的部份。
所以 atoi("128.44") = 128, atoi("3h9f") = 3, ...
你可以想像 atoi 的運作原理就是
while(str[i..i]是數字時)
{
.
.
}
那正常來講應該沒有 sscanf 不能解決的問題,我是比較
懷疑是不是 sscanf 本身有問題。
另外你也可以用 strsrch 去判斷 str 裡面有沒有 "h".
比方
if(判斷到 str 有 "h")
tmps = explode(str,"h");
這樣就可以把 str 從 "h" 這個字串的位置進行拆解,例
如 4444h -> ({"4444"}) // 因為 h 後面沒東西
44h33 -> ({"44","33"})
我是覺得最好一開始就不要讓 str 的範圍太寬,比方你限
定 str 一定要有 "h", 那就用 strsrch 去抓;限定起頭
一定要有非 0 的數字, 就用 atoi 去抓; ...
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 223.143.125.187
※ 編輯: laechan 來自: 223.143.125.187 (10/31 17:59)
推
10/31 18:43, , 1F
10/31 18:43, 1F
討論串 (同標題文章)
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章