sprintf para _int64 sin firmar

Tengo el siguiente código. La salida del segundo% d en sprintf siempre se muestra como cero. Creo que estoy especificando especificadores incorrectos. ¿Alguien puede ayudarme a obtener una cadena de escritura con los valores correctos? Y esto tiene que lograrse en posix estándar. Gracias por las entradas

void main() {
    unsigned _int64 dbFileSize = 99;
    unsigned _int64 fileSize = 100;
    char buf[128];
    memset(buf, 0x00, 128);
    sprintf(buf, "\nOD DB File Size = %d bytes \t XML file size = %d bytes", fileSize, dbFileSize);
    printf("The string is %s ", buf);
    }

Salida

The string is
OD DB File Size = 100 bytes      XML file size = 0 bytes 

Respuestas a la pregunta(3)

Su respuesta a la pregunta