O especificador Format é uma string usada nas funções de entrada e saída formatadas. A string de formato determina o formato da entrada e da saída. A string de formato sempre começa com um caractere '%'.
Os especificadores de formato comumente usados na função printf() são:
Especificador de formato | Descrição |
---|---|
%d ou %i | É usado para imprimir o valor inteiro assinado, onde inteiro assinado significa que a variável pode conter valores positivos e negativos. |
%em | É usado para imprimir o valor inteiro sem sinal, onde o inteiro sem sinal significa que a variável pode conter apenas valores positivos. |
%o | É usado para imprimir o número inteiro octal sem sinal, onde o valor inteiro octal sempre começa com um valor 0. |
%x | É usado para imprimir o número inteiro hexadecimal sem sinal, onde o valor inteiro hexadecimal sempre começa com um valor 0x. Neste, os caracteres alfabéticos são impressos em letras minúsculas, como a, b, c, etc. |
%X | É usado para imprimir o número inteiro hexadecimal sem sinal, mas %X imprime os caracteres alfabéticos em letras maiúsculas, como A, B, C, etc. |
%f | É usado para imprimir os valores decimais de ponto flutuante. Por padrão, ele imprime os 6 valores após '.'. |
%e e | É usado para notação científica. Também é conhecido como Mantissa ou Expoente. |
%g | É utilizado para imprimir os valores decimais de ponto flutuante e utiliza precisão fixa, ou seja, o valor após o decimal na entrada seria exatamente igual ao valor na saída. |
%p | É usado para imprimir o endereço em formato hexadecimal. |
%c | É usado para imprimir o caractere não assinado. |
%s | É usado para imprimir as strings. |
%ld | É usado para imprimir o valor inteiro com sinal longo. |
Vamos entender detalhadamente os especificadores de formato por meio de um exemplo.
int main() { int b=6; int c=8; printf('Value of b is:%d', b); printf(' Value of c is:%d',c); return 0; }
No código acima, estamos imprimindo o valor inteiro de b e c usando o especificador% d.
Saída
int main() { int b=10; int c= -10; printf('Value of b is:%u', b); printf(' Value of c is:%u',c); return 0; }
No programa acima, exibimos o valor de b e c usando um especificador de formato não assinado, ou seja,% u. O valor de b é positivo, então o especificador %u imprime o valor exato de b, mas não imprime o valor de c, pois c contém o valor negativo.
Saída
int main() { int a=0100; printf('Octal value of a is: %o', a); printf(' Integer value of a is: %d',a); return 0; }
No código acima, exibimos o valor octal e o valor inteiro de a.
Saída
int main() { int y=0xA; printf('Hexadecimal value of y is: %x', y); printf(' Hexadecimal value of y is: %X',y); printf(' Integer value of y is: %d',y); return 0; }
No código acima, y contém o valor hexadecimal 'A'. Exibimos o valor hexadecimal de y em dois formatos. Usamos %x e %X para imprimir o valor hexadecimal onde %x exibe o valor em letras minúsculas, ou seja, 'a' e %X exibe o valor em letra maiúscula, ou seja, 'A'.
Saída
int main() { float y=3.4; printf('Floating point value of y is: %f', y); return 0; }
O código acima imprime o valor flutuante de y.
Saída
int main() { float y=3; printf('Exponential value of y is: %e', y); return 0; }
Saída
int main() { float y=3; printf('Exponential value of y is: %E', y); return 0; }
Saída
int main() { float y=3.8; printf('Float value of y is: %g', y); return 0; }
No código acima, exibimos o valor flutuante de y usando o especificador%g. O especificador %g exibe a saída igual à entrada com a mesma precisão.
Saída
int main() { int y=5; printf('Address value of y in hexadecimal form is: %p', &y); return 0; }
Saída
int main() { char a='c'; printf('Value of a is: %c', a); return 0; }
Saída
int main() { printf('%s', 'javaTpoint'); return 0; }
Saída
Especificador de largura mínima de campo
Suponha que queiramos exibir uma saída que ocupe um número mínimo de espaços na tela. Você pode conseguir isso exibindo um número inteiro após o sinal de porcentagem do especificador de formato.
algoritmo de Kruskals
int main() { int x=900; printf('%8d', x); printf(' %-8d',x); return 0; }
No programa acima, o especificador %8d exibe o valor após 8 espaços, enquanto o especificador %-8d criará um valor alinhado à esquerda.
Saída
Agora veremos como preencher os espaços vazios. É mostrado no código abaixo:
int main() { int x=12; printf('%08d', x); return 0; }
No programa acima, %08d significa que o espaço vazio é preenchido com zeros.
Saída
Especificando precisão
Podemos especificar a precisão usando '.' Operador (ponto) que é seguido por um inteiro e um especificador de formato.
int main() { float x=12.2; printf('%.2f', x); return 0; }
Saída