Может быть, я глупый, но я все равно попробую. Из веток комментариев кажется, что все еще есть какое-то заблуждение. Вам нужно знать количество байтов. Но метод возвращает только количество прочитанных полей или EOF.
Чтобы получить количество байтов, используйте то, что вы можете легко посчитать, или используйте спецификатор размера в строке формата. В противном случае у вас не будет шанса узнать, сколько байтов прочитано, кроме как переходить по полям одно за другим. Кроме того, вы можете иметь в виду, что
sscanf_s(source, "%d%d"...)
будет успешным на обоих входах "123 456" и "10 \ t30", которые имеют различную длину. В этих случаях невозможно определить размер, если вы не конвертируете его обратно. Итак: используйте поле фиксированного размера или оставьте в забвении ....
Важное примечание: помните, что при использовании %c
это единственный способ включить разделители полей (перевод строки, табуляция и пробел) в вывод. Все остальные будут пропускать границы поля, затрудняя поиск нужного количества байтов.
EDIT:
Из "C ++ The Complete Reference" я только что прочитал:
%n
Получает целочисленное значение, равное
количество прочитанных символов
Разве это не то, что вы хотели? Просто добавьте его в строку формата. Это подтверждено здесь , но я не проверял его с помощью sscanf_s.