Что означает спецификатор управления форматом% 016I64X в sprintf_s

Что означает спецификатор элемента управления форматом "% S \% 016I64X% S" в этой команде sprintf_s?

Насколько мне известно, он определяет строку, которая преобразует числа в беззнаковое 64-битное целое число в шестнадцатеричном формате. Хотелось бы знать, прав ли я? Пожалуйста помогите..

char lFileName[MAX_PATH];
sprintf_s( lFileName, MAX_PATH, "%S\\%016I64X%S", mSavePath.GetBuffer(),aBuffer->GetTimestamp(), lExt );

person Robionic    schedule 08.08.2013    source источник


Ответы (1)


Во-первых, это похоже на использование Visual C ++

int sprintf_s(char *buffer, size_t sizeOfBuffer, const char *format, ...);

Формат состоит из нескольких директив: "%S", "\\", "%016I64X", "%S".

"%S" "При использовании с функциями printf указывает строку широких символов; ..." подробнее

"\\" - это просто \.

"%016I64X" - это X спецификатор формата шестнадцатеричного вывода. 0 для обозначения необходимости заполнения нулями. 16, чтобы указать минимальную длину вывода. I64 - это модификатор, специфичный для Windows, указывающий, что ожидаемое целое число имеет специфичный для Windows тип unsigned __int64. подробнее

Вы на правильном пути с «64-битным целым числом без знака».

person chux - Reinstate Monica    schedule 25.08.2013
comment
Почему не %uud? : D - person hola; 24.09.2018
comment
@ pushpen.paul Re: Почему не %uud: "%uud" - это стандарт C "%u", за которым следует "ud". Возможно, вы думаете о "%llu"? IAC, тип реализации unsigned __int64 может отображаться на стандартные типы unsigned long, unsigned long long или другие, а затем использовать "%llX", "%lX" для печати в шестнадцатеричном формате. Использование спецификаторов C99, таких как "%" PRIX64, наиболее целесообразно через <inttypes.h>. - person chux - Reinstate Monica; 25.09.2018