Мне нужно разобрать MAC-адрес из строки вроде "mac" : "11:22:33:44:55:66" с помощью c.

Мой код:

#include <stdio.h>
#include <string.h>
#include <stddef.h>

int main() {
    char str[50] = "\"mac\" : \"11:22:33:44:55:66\"";
    char second_string[20];
    sscanf(str, "what should come here?", second_string);
    printf("%s\n", second_string);
}

Мой результат должен быть:

11: 22: 33: 44: 55: 66

0
Aravind 9 Ноя 2018 в 19:30

1 ответ

Лучший ответ

Семейство функций scanf просто сопоставление с образцом. Поэтому вы можете сделать что-то вроде

sscanf(str, "\"mac\" : \"%[^\"]\"", second_string);

Формат "%[^" соответствует чему угодно кроме символов перед закрывающим "]".


Для более общего решения вы можете найти разделяющий ':' (например, с помощью strchr) и анализировать только последнюю часть строки (после ':').

Чтобы быть еще более универсальным, пропустите двоеточие и все пробелы (с помощью цикла и isspace), и вам останется только проанализировать "\"11:22:33:44:55:66\"". И это можно сделать с помощью формата "%[^", как показано выше.

3
Some programmer dude 9 Ноя 2018 в 16:47