2011-04-15 48 views
1

我有一个捕获数据的C程序,其中包含捕获MAC地址。但是,虽然MAC可能是例如00:0F:3A:D3,但该程序将其捕获为0:F:3A:D3。有没有办法检查字符串,看看两个“:”之间是否有一个字符,如果是,在前面添加一个零?将零加到字符串

我不是一个好的程序员,所以任何帮助表示赞赏 - 谢谢:)

+2

嗯...你看看字符串,并检查几个相邻的字符,并决定是否是这种情况。有什么问题? – sharptooth 2011-04-15 11:53:52

回答

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); 
} 
+0

非常感谢你taskinoor :) – 2011-04-15 12:13:08

2

使用printf的修改%02X输出带有前导零的十六进制数。

如果您从另一个应用程序以这种格式接收到此字符串,我会建议修复该其他应用程序而不是修改您的代码。