我是学生,我使用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
答案 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.
}