将零添加到字符串

时间:2011-04-15 11:51:17

标签: c parsing sniffer

我有一个捕获数据的C程序,其中它捕获MAC地址。但是,虽然MAC可能是00:0F:3A:D3,但程序会像0:F:3A:D3一样捕获它。有没有办法检查字符串,看看两个“:”之间是否有一个字符,如果是,那么在前面加一个零?

我不是一个优秀的程序员,所以感谢任何帮助 - 谢谢:)

2 个答案:

答案 0 :(得分:4)

int main() {
    char *s = "0:F:3A:D3";
    char o[15];
    int a, b, c, d;
    sscanf(s, "%X:%X:%X:%X", &a, &b, &c, &d);
    sprintf(o, "%02X:%02X:%02X:%02X", a, b, c, d);
    printf(o);
}

答案 1 :(得分:2)

使用printf修饰符%02X输出前导零的十六进制数字。

如果您从其他应用程序收到这种格式的字符串,我建议修复其他应用程序,而不是调整您的代码。