Ответ 1
Я не знаю, что 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 _int64
с помощью int64_t
, не глядя на то, что делаю. Спасибо за комментарии, указав, что он uint64_t
, а не unsigned int64_t
. Исправлено.