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