Добавить нули в строку

#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 для вывода шестнадцатеричного числа с начальным нулем.

Если вы получаете эту строку в таком формате из другого приложения, я бы предложил исправить это другое приложение, а не адаптировать ваш код.