LINUX.ORG.RU

sscanf и скобки. ЧЯДНТ?

 


0

1
        char test[] = "56(84)";
        scan = sscanf(test, "%u(%u)", &ping_packet, &ping_full);
        printf("%s -> %u\n", test, scan);
56(84) -> 2
        char test[] = "PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.";
        scan = sscanf(test, "PING %*s (%*s) %u(%u) bytes of data.", &ping_packet, &ping_full);
        printf("%s -> %u\n", test, scan);
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data. -> 0

Что я делаю не так? При этом если сканить %s вместо %*s то они даже парсятся - 127.0.0.1 и 127.0.0.1

★★★★★

Короче решено - вторая s парсится как «127.0.0.1)»

PPP328 ★★★★★
() автор топика

Дополню, для полноты:

%s     -- matches a sequence of non-whitespace characters (a string)
%[set] -- matches a non-empty sequence of character from set of characters

Рабочий вариант:

sscanf(test, "PING %*s (%*[^)]) %u(%u) bytes of data.", &ping_packet, &ping_full);
xaizek ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.