これがどれほど移植性があるか、または要件に正確に一致するかどうかはわかりません。
#include <stdio.h>
int main()
{
unsigned a;
while (scanf("%02x%*[-: ]", &a) == 1) {
fprintf(stdout, "%02x\n", a);
}
return 0;
}
この入力 (最初の 16 進数の後にタブ、最後の前にスペース):
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