作者laechan (小太保)
看板mud_sanc
标题Re: [wizs] 问题[玖]
时间Wed Oct 31 17:59:01 2012
※ 引述《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)
1F:推 justinj :突然想到用另一个方法处理了... 10/31 18:43