1

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

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

4

2 回答 2

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);
}
于 2011-04-15T12:00:52.137 回答
2

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

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

于 2011-04-15T11:54:02.217 回答