Я не знаю, что говорит POSIX по этому поводу, но это прекрасно обрабатывается ядром C99:
#include <stdio.h>
#include <inttypes.h>
int main(void) {
uint64_t dbFileSize = 99;
uint64_t fileSize = 100;
char buf[128];
memset(buf, 0x00, 128);
sprintf( buf, "\nOD DB File Size = %" PRIu64 " bytes \t"
" XML file size = %" PRIu64 " bytes\n"
, fileSize, dbFileSize );
printf( "The string is %s\n", buf );
}
Если ваш компилятор не совместим с C99, приобретите другой компилятор. (Да, я смотрю на тебя, Visual Studio.)
PS: Если вы беспокоитесь о переносимости, не используйте %lld
. Это для long long
, но нет никаких гарантий, что long long
фактически совпадает с _int64
(POSIX) или int64_t
(C99).
Редактировать: Mea culpa - я более или менее бездумно "ищу и заменяю" d 1019 * на int64_t
, даже не смотря на то, что я делаю. Спасибо за комментарии, указывающие, что это uint64_t
, а не unsigned int64_t
. Исправлено.