C 加零';s串

C 加零';s串,c,parsing,sniffer,C,Parsing,Sniffer,我有一个C程序可以捕获数据,其中包括MAC地址。然而,虽然MAC可能是例如00:0F:3A:D3,但程序像0:F:3A:D3一样捕获它。有没有办法检查字符串,看看两个“:”之间是否有一个字符,如果有,在前面加一个零 我不是一个好的程序员,因此非常感谢您的帮助-谢谢:)使用printf修饰符%02X输出一个带前导零的十六进制数 如果您从另一个应用程序收到这种格式的字符串,我建议您修复另一个应用程序,而不是修改您的代码。使用printf修饰符%02X输出带前导零的十六进制数 int main() {

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


我不是一个好的程序员,因此非常感谢您的帮助-谢谢:)

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


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

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

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

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

Emm。。。查看字符串并检查几个相邻字符,然后确定是否是这种情况。怎么了?嗯。。。查看字符串并检查几个相邻字符,然后确定是否是这种情况。有什么问题吗?
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);
}