#c #parsing #sniffer
#c #синтаксический анализ #анализатор
Вопрос:
У меня есть программа на C, которая собирает данные, и среди них она фиксирует MAC-адреса. Однако, хотя MAC может быть, например, 00:0F:3A:D3
, программа фиксирует его следующим образом 0:F:3A:D3
. Есть ли способ проверить строку и посмотреть, есть ли между двумя « :
» один символ, и если да, то добавить ноль впереди?
Я не очень хороший программист, поэтому любая помощь приветствуется — спасибо 🙂
Комментарии:
1. Эмм… Вы смотрите на строку, проверяете несколько соседних символов и решаете, та ли это ситуация. В чем проблема?
Ответ №1:
int main() {
char *s = "0:F:3A:D3";
char o[15];
int a, b, c, d;
sscanf(s, "%X:%X:%X:%X", amp;a, amp;b, amp;c, amp;d);
sprintf(o, "X:X:X:X", a, b, c, d);
printf(o);
}
Ответ №2:
Используйте модификатор printf X
для вывода шестнадцатеричного числа с начальным нулем.
Если вы получаете эту строку в таком формате из другого приложения, я бы предложил исправить это другое приложение, а не адаптировать ваш код.