从控制台读取和存储地址Mac

时间:2015-12-27 19:07:20

标签: c network-programming

我是学生,我使用C语言编写网络实际工作,我的问题是:如何从控制台读取MAC地址(xx:xx:xx:xx:xx:xx),并将其存储在一张桌子,我尝试了这个,但之后操纵它们并不容易。

还有更好的建议吗?

char MAC[18] = {""};
printf("\n\tEntrez l'@ Mac (XX:XX:XX:XX:XX:XX) en Hex :");
fgets(MAC,sizeof(MAC),stdin); //read MAC

1 个答案:

答案 0 :(得分:0)

除了一个小问题之外,您当然可以从用户那里读取十六进制的MAC地址,除了一个小问题:给fgets一个足够大的缓冲区以容纳17个字符,最终'\0'将导致用户键入的换行符以保留在stdin流中。它将在任何进一步的输入之前被读取,可能不是你所期望的。

此外,您希望将此地址转换为套接字接口所需的二进制格式。

fgets提供更大的缓冲区,并使用sscanf解析:

    char line[80];
    unsigned char MAC[6];

    printf("\n\tEntrez l'adresse Mac (XX:XX:XX:XX:XX:XX) en Hexa :");
    if (fgets(line, sizeof(line), stdin)
    &&  sscanf(line, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx",
               MAC, MAC+1, MAC+2, MAC+3, MAC+4, MAC+5) == 6) {
        // MAC address correctly parsed into MAC[0...5]
    } else {
        // invalid input.
    }