我有一个捕获数据的C程序,其中它捕获MAC地址。但是,虽然MAC可能是00:0F:3A:D3
,但程序会像0:F:3A:D3
一样捕获它。有没有办法检查字符串,看看两个“:
”之间是否有一个字符,如果是,那么在前面加一个零?
我不是一个优秀的程序员,所以感谢任何帮助 - 谢谢:)
答案 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
输出前导零的十六进制数字。
如果您从其他应用程序收到这种格式的字符串,我建议修复其他应用程序,而不是调整您的代码。