Skip to content

Format String

source ir0nstone.gitbook.io

Contoh jika ingin print dengan format specifier

int value = 1205;

printf("Decimal: %d\nFloat: %f\nHex: 0x%x", value, (double) value, value);

output

Decimal: 1205
Float: 1205.000000
Hex: 0x4b5

Bug

int value = 1205;

printf("%x %x %x", value);

output

4b5 5659b000 565981b0

nilai parameter diambil dari memori stack, jika tidak cukup parameter pada stack maka akan mengambil next value dari stack parameter

contoh

#include <stdio.h>

int main(void) {
    char buffer[30];

    gets(buffer);

    printf(buffer);
    return 0;
}
$ ./test 

yes
yes

$ ./test

%x %x %x %x %x
f7f74080 0 5657b1c0 782573fc 20782520

penulisan versi panjang

printf("%x %x %x", value, value, value);

penulisan versi ringkas

printf("%1$x %1$x %1$x", value);

1$ artinya mengambil nilai parameter pertama, misal jika ingin mengambil nilai parameter ke 6 maka 6$, misal %6$p