Спецификатор формата для sscanf:% {format%} - PullRequest
0 голосов
/ 29 ноября 2018

Я видел только пару ссылок на формат в названии, и нет хороших примеров.Определение, которое я видел, было таким:

%{format%} Неоднократно сопоставляет формат спецификатора формата столько раз, сколько возможно, и выдает массив массивов с результатами.

У кого-нибудь есть хороший пример того, как это использовать?Что нужно передать, чтобы получить результаты?

Ответы [ 2 ]

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

Похоже, вы получили эту цитату из docs.roxen / pike , которая не стандартная C.

Pike - это объектно-ориентированный язык программирования с синтаксисом , аналогичным для Java и C .Это не C!


Чтобы узнать о sscanf(), вам следует проверить ссылку , в которой упоминается:

format: строка C, которая содержит строку формата, которая соответствует тем же спецификациям, что и формат в scanf (см. Scanf).

, а также предоставляет пример.Другой пример:

#include <stdio.h>

int main () {
   int day, year;
   char month[10], date[15] = "29 May 1453";

   int items_read = sscanf(date, "%d %s %d", &day, month, &year);

   printf("Constantinople fell in %d %s %d. sscanf() Read %d items.\n", day, month, year, items_read);

   return 0;
}

Вывод:

Constantinople fell in 29 May 1453. sscanf() Read 3 items.

Здесь sscanf() ожидает date в качестве источника и будет сопоставлять формат с параметрами после него.Он попытается сопоставить строку date с целым числом, за которым следуют пробел, строка, пробел и целое число.

Как видите, date имеет целое число (29), затемпробел, затем строка («май»), затем пробел, а затем целое число (1453), таким образом, он идеально соответствует формату.Затем он присваивает эти значения соответствующим переменным.

Обратите внимание, как возвращаемое значение метода в случае успеха возвращает количество элементов в списке аргументов, успешно заполненных.

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

Похоже, что это эксклюзивно для Pike, который не совсем C ++.

Pike - интерпретируемый, объектно-ориентированный язык программирования.Это немного похоже на C и C ++, но его намного легче изучать и использовать.Его можно использовать как для небольших скриптов, так и для больших программ.

http://docs.roxen.com/pike/7.0/tutorial/introduction/index.xml

http://docs.roxen.com/pike/7.0/tutorial/strings/sscanf.xml

...