Como formatar com printf () em C Programming

A função de saída mais popular na programação C tem que ser printf (). É o favorito de todos. É uma das primeiras funções que você aprende em C. E como um dos mais complexos, é uma das funções que ninguém sabe nunca completamente.

O poder em printf () reside na sua cadeia de formatação. Esse texto pode ser embalado com texto simples, seqüências de escape, e caracteres de conversão, que são as pequenas cento goobers que inserem valores para a saída de texto. São esses caracteres de conversão que dão printf () o seu poder real, e eles também são um dos aspectos do menos compreendido de função.

Como formatar ponto flutuante

Você pode usar mais do que o caráter básico de conversão% f para formatar valores de ponto flutuante. Na verdade, aqui é um grande formato que você pode usar no printf () de função de formatação de texto:

%W.pf

o W define a largura máxima do número total, incluindo a casa decimal. o p define precisão. Por exemplo:

printf ( "% 9.2f", 12,45) -

Esta declaração produz quatro espaços e, em seguida 12,45. Esses quatro espaços mais 12.45 (cinco caracteres total) igual a 9 na largura. Apenas dois valores são apresentados à direita do decimal porque .2 é usado no caractere de conversão% f.

É possível especificar o valor de precisão sem definir uma largura, mas ele deve ser precedido de um ponto decimal, como em% .2f (cento ponto de dois F). veja A printf () Ponto Flutuante formatação Gamut.

A PRINTF () De ponto flutuante GAMUT FORMATANDO

#include int main () {sample1 flutuador = 34.5-float sample2 = 12,3456789-printf ( "%% 9.1f =% 9.1f n", sample1) -printf ( "%% 8.1f =% 8.1f n", sample1) -printf ( "%% 7.1f =% 7.1f n", sample1) -printf ( "%% 6.1f =% 6.1f n", sample1) -printf ( "%% 5.1f =% 5.1f n ", sample1) -printf (" %% 4.1f =% 4.1f n ", sample1) -printf (" %% 3.1f =% 3.1f n ", sample1) -printf (" 2.1f %% =% 2.1f n ", sample1) -printf (" %% 1.1f =% 1.1f n ", sample1) -printf (" %% 9.1f =% 9.1f n ", sample2) -printf (" %% 9.2f =% 9.2f n ", sample2) -printf (" %% 9.3f =% 9.3f n ", sample2) -printf (" %% 9.4f =% 9.4f n ", sample2) -printf ( "%% 9.5f =% 9.5f n", sample2) -printf ( "%% 9.6f =% 9.6f n", sample2) -printf ( "%% 9.7f =% 9.7f n ", sample2) -printf (" %% 9.6f =% 9.6f n ", sample2) -printf (" %% 9.7f =% 9.7f n ", sample2) -printf (" %% 9.8f =% 9.8f n ", sample2) -Retornar (0) -}

Exercício 1: Digite o código-fonte do printf () Ponto Flutuante formatação Gamut em seu editor. Parece um monte de trabalho, mas você pode criar o código rapidamente usando um monte de copiar-e-colar.

A saída do Exercício 1 ajuda a ilustrar a largura e de precisão porções de saída do caractere de conversão% f:

% 9.1f = 34,5% 8.1f = 34,5% 7.1f = 34,5% 6.1f = 34,5% 5.1f = 34,5% 4.1f = 34,5% 3.1f = 34,5% 2.1f = 34,5% 1.1f = 34,5% 9.1f = 12,3 9.2f% = 12,35% 9.3f = 12,346% 12,3457% 9.4f = 9.5f = 12,34568% 9.6f = 12,345679% 9.7f = 12,3456793% = 9.8f 12,34567928

Deste resultado, você pode ver como o valor da largura "almofadas" os números à esquerda. Como o valor da largura diminui, o mesmo acontece com o preenchimento. No entanto, quando a largura especificada é mais largo do que o valor original, absurdo é exibida, como mostrado pelas duas últimas linhas de saída. Isso porque a largura é além do limite de precisão simples.

Definir a largura de saída

o Wopção utilizada para largura de saída está disponível para todos os caracteres de conversão, não apenas% f. o largura é a quantidade mínima de espaço previsto para a saída. Quando a saída é menor do que a largura, é certo; justificada. Quando a saída for maior do que a largura, a largura é ignorado. Veja Mexer com a largura.

Mexer com o WIDTH

main () {printf ( "%% 15s =% 15s n", "Olá") # include int - printf ( "%% 14s =% 14s n", "Olá") - printf ( "%% 13s = % 13s n "," Olá ") - printf (" %% 12s =% 12s n "," Olá ") - printf (" %% 11s =% 11s n "," Olá ") - printf (" %% 10s =% 10s n "," Olá ") - printf (" %% 9s =% 9s n "," Olá ") - printf (" %% 8s =% 8s n "," Olá ") -printf ( "%% 7s =% 7s n", "Olá") - printf ( "%% 6s =% 6s n", "Olá") - printf ( "%% 5s =% 5s n", "Olá") - printf ( "%% 4s =% 4s n", "Olá") - retorno (0) -}

exercício 2: Digite o código-fonte de mexer com a largura em um novo projeto. Criar e executar para examinar a saída, que se parece com isso:

% 15s = Olá% 14s = Olá% 13s = Olá% 12s = Olá% 11s = Olá% 10s = Olá% 9s = Olá% 8s = Olá% 7s = Olá% 6s = Olá% 5s = Olá% 4s = Olá

Tal como acontece com a opção de largura para números de ponto flutuante (veja o exercício anterior), o espaço será preenchido à esquerda quando a largura é maior que a seqüência de caracteres exibida. Mas quando a largura é menor do que o comprimento da corda, a cadeia completa ainda está exibido.

Quando o valor da largura é especificado para um número inteiro, ele pode ser usado para a direita; alinhar a saída. Por exemplo:

printf ( "% 4d", value) -

Esta declaração garante que a saída para o valor está certo; justificados e pelo menos quatro caracteres largos. Se o valor for inferior a quatro caracteres de largura, ele é preenchido com espaços à esquerda. Isto é, a menos que você furar um 0 ali:

printf ( "% 04d", value) -

Nesse caso, o printf () placas de funções a largura com zeros para manter tudo quatro caracteres de largura.

Como alinhar saída

O valor da largura do caractere de conversão alinha a saída para a direita, como conhecido justificação direita. Mas nem tudo está bem. Às vezes, você quer justificação esquerda. Para forçar o preenchimento para o lado direito da saída, insira um sinal de menos antes do valor de largura em caractere de conversão% s. Por exemplo:

printf ( "% - 15s", string) -

Esta declaração mostra o texto na seqüência de matriz justificada à esquerda. Se a string é menor do que 15 caracteres, os espaços são adicionados à direita.

O código fonte no Meeting in the Middle exibe duas cordas. O primeiro é deixado; justificada dentro de uma gama de larguras variáveis. A largura fica menor a cada declaração printf progressiva ().

ENCONTRO NO MEIO

#include int main () {printf ( "% - 9s me n", "encontro") - printf ( "% - 8s me n", "encontro") - printf ( "% - 7s me n ", "atender") - printf ( "% - 6s me n", "encontro") - printf ( "% - 5s me n", "encontro") - printf ( "% - 4s me n", "meet ") -Retornar (0) -}

exercício 3: Copie o formato de código Meeting in the Middle em seu editor. Criar o programa e executá-lo para ver a saída alinhamento demonstrada.

exercício 4: Escreva um programa que mostra os primeiros e últimos nomes dos primeiros quatro presidentes dos Estados Unidos. Armazenar os nomes em uma matriz de char multidimensional. Os nomes precisa alinhar para que a saída se parece com isso:

George WashingtonJohn AdamsThomas JeffersonJames Monroe

menu