Как разобрать слово, заключенное в кавычки в C? - PullRequest
0 голосов
/ 09 ноября 2018

Мне нужно проанализировать 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

1 Ответ

0 голосов
/ 09 ноября 2018

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

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

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


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

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

...