Я хочу разобрать строку const char *str
, и мне нужно прочитать ее по частям с несколькими вызовами sscanf()
У меня есть пример того, что я мог бы сделать, если бы это был текстфайл, который можно проанализировать с помощью fscanf()
, который обновляет указатель FILE *fp
до позиции, которую он перестает читать:
fscanf(fp, "name %s ", name);
fscanf(fp, "date %*i ");
fscanf(fp, "{ ");
fscanf(fp, " isdst %*i ");
fscanf(fp, " yday %*i ");
fscanf(fp, " wday %*i ");
fscanf(fp, " year %i ", &year);
fscanf(fp, " mon %i ", &mon);
fscanf(fp, " mday %i ", &day);
Но sscanf()
не обновляет указатель.Есть ли способ сделать это?
РЕДАКТИРОВАТЬ:
Из комментария @pmg, у меня есть этот код сейчас:
if (sscanf(str, " %lf%n", &a, &pos) != 1)
goto err;
str += pos;
if (sscanf(str, " %i%n", &b, &pos) != 1)
goto err;
str += pos;
, который долженбыть эквивалентным одной строке:
if (sscanf(str, " %lf %i", &a, &b) != 2)
goto err;
Это то, что делает% n?