У меня есть приложение, написанное на C, которое читает текстовые сообщения от модема с помощью AT-команд. Типичный AT-ответ от модема выглядит следующим образом:
+CMGL: 1,"REC READ","+31612123738",,"08/12/22,11:37:52+04"
Код в настоящее время настроен на получение только идентификатора из этой строки, который является первым числом, и делает это, используя следующий код:
sscanf(line, "+CMGL: %d,", &entry);
Здесь «строка» - это массив символов, содержащий строку из модема, а «запись» - это целое число, в котором хранится идентификатор. Я попытался расширить этот код следующим образом:
sscanf(line, "+CMGL: %d,\"%*s\",\"%s\",", &entry, phonenr);
Я решил, что с помощью% * s отсканирую текст в первой паре кавычек, пропущу его и прочту текст в следующей паре цитат (номер телефона) в массив символов phonenr.
Это не работает (% * s явно читает "REC", а следующие% s ничего не читают).
Дополнительным вызовом является то, что текст не ограничен "REC READ", на самом деле это может быть много вещей, а также текст без пробела в нем.