2015-12-27 3 views
-3

Я студент, я программирую сетевую практическую работу с языком C, мой вопрос: как читать MAC-адрес (xx: xx: xx: xx: xx: xx) с консоли и сохранить его в таблице, я пробовал это, но с ними нелегко манипулировать.чтение и хранение адреса Mac с консоли

Есть ли лучшие предложения?

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

Вы должны взять этот вопрос на другом форуме, как это прямо нарушает правила дома-StackOverflow. Здесь вы найдете конкретные проблемы, которые вы пытаетесь решить с помощью набора технологий и нуждаетесь в помощи. –

+0

Практически любой язык программирования имеет инструменты для сетевой коммуникации. – David

+0

спасибо Khalil –

ответ

0

Можно, конечно, читать МАС-адрес в шестнадцатеричном от пользователя, как показано на рисунке, для небольшого выпуска, за исключением: давая 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. 
    } 
Смежные вопросы