我不知道這是多麼便攜,或者它完全符合您的要求。
#include <stdio.h>
int main()
{
unsigned a;
while (scanf("%02x%*[-: ]", &a) == 1) {
fprintf(stdout, "%02x\n", a);
}
return 0;
}
有了這個輸入(第一個十六進制數後製表符,空格前的最後一次):
a0 b1-01:ff-:-b0 55
它產生這樣的輸出:
a0
b1
01
ff
b0
55
如果你需要一個以上的項目在相同的調用中,嘗試一些變化(以空格或製表符作爲分隔符):
#include <stdio.h>
int main()
{
unsigned a,b,c;
while (scanf("%02x%*[-: \t]%02x%*[-: \t]%02x%*[:-]", &a, &b, &c) == 3) {
fprintf(stdout, "%02x %02x %02x\n", a, b, c);
}
return 0;
}
其中給出本作上述輸入:
a0 b1 01
ff b0 55
來源
2011-04-15 06:35:24
Mat
如果是我,我可能會寫上幾行額外打開破折號和空格成':'然後寫一個簡單的'的sscanf(3) '規則。 – sarnold 2011-04-15 06:11:35