Artigo original: Format Specifiers in C

Os especificadores de formatação definem o tipo de dados a ser impresso no resultado padrão. Você precisa usar especificadores de formatação se estiver imprimindo resultado formatado com printf() ou se estiver aceitando uma entrada com scanf().

Alguns dos especificadores % que você pode usar em ANSI C são:

ESPECIFICADORUSADO PARA
%cum único caractere
%suma string
%hishort (com sinal)
%hushort (sem sinal)
%Lflong double
%nsem impressão
%dum inteiro decimal (assume a base 10)
%ium decimal inteiro (detecta a base automaticamente)
%oum inteiro octal (base 8)
%xum inteiro hexadecimal (base 16)
%pum endereço (ou pointer)
%fum número de ponto flutuante para floats
%uint decimal sem sinal
%eum número de ponto flutuante em notação científica
%Eum número de ponto flutuante em notação científica
%%o símbolo %

Exemplos:

Especificador de formatação de caractere único %c:

#include <stdio.h> 

int main() { 
  char first_ch = 'f'; 
  printf("%c\n", first_ch); 
  return 0; 
} 

Resultado:

f

Especificador de formatação de string %s:

#include <stdio.h> 

int main() { 
  char str[] = "freeCodeCamp"; 
  printf("%s\n", str); 
  return 0; 
} 

Resultado:

freeCodeCamp

Entrada de caracteres com o especificador de formatação %c:

#include <stdio.h> 

int main() { 
  char user_ch; 
  scanf("%c", &user_ch); // user inputs Y
  printf("%c\n", user_ch); 
  return 0; 
} 

Resultado:

Y

Entrada de strings com o especificador de formatação %s:

#include <stdio.h> 

int main() { 
  char user_str[20]; 
  scanf("%s", user_str); // user inputs fCC
  printf("%s\n", user_str); 
  return 0; 
} 

Resultado:

fCC

Especificadores de formatação de inteiros decimais %d e %i:

#include <stdio.h> 

int main() { 
  int found = 2015, curr = 2020; 
  printf("%d\n", found); 
  printf("%i\n", curr); 
  return 0; 
} 

Resultado:

2015
2020

Especificador de formatação de número de ponto flutuante %f e %e:

#include <stdio.h>

int main() { 
  float num = 19.99; 
  printf("%f\n", num); 
  printf("%e\n", num); 
  return 0; 
}

Resultado:

19.990000
1.999000e+01

Especificador de formatação de inteiro octal %o:

#include <stdio.h> 

int main() { 
  int num = 31; 
  printf("%o\n", num); 
  return 0; 
}

Resultado:

37

Especificador de formatação de inteiro hexadecimal %x:

#include <stdio.h> 

int main() { 
  int c = 28; 
  printf("%x\n", c); 
  return 0; 
} 

Resultado:

1c