Formatando uma String



  Principais Funções de String

Função Descrição Modo de utilização
fprintf Envia uma saída de texto formatada para um objeto do tipo stream. int fprintf (FILE *stream, const char *format [, argument, ...]);
printf  Envia uma saída de texto formatada para a tela. int printf ( const char *format [, argument, ...]);
sprintf  Envia uma saída de texto formatada para outra string. int sprintf (char *buffer, const char *format [, argument, ...]);

  A função fprintf é utilizada quando deseja-se enviar uma string para um arquivo de saída. Por exemplo, pode-se gravar uma frase em um arquivo texto da seguinte maneira:
#include <stdio.h>

FILE *arquivo;

void main(void)
{
    arquivo = fopen("arquivo.txt","wt");
    fprintf(arquivo, "O MSX ainda vive!");
    fclose(arquivo);
} 

  Os parâmetros de abertura de um arquivo são:
  A função printf é utilizada para se escrever um texto formatado na tela.
  A função sprintf é utilizada para se criar uma string formatada e copiá-la em uma variável do tipo string.


  Formatação de Strings

  Uma das grandes virtudes do C é podermos formatar a saída de texto, em vez de ficarmos fazendo centenas de concatenações.

  A sintaxe do símbolo de formatação "%" é:
 % [flags] [largura] [.precisão] [F|N|h|l|L] [tipo de caracter]
  Onde:

Componente Descrição
flags Alinhamento, sinais, pontos decimais, etc.
largura Fixa largura de saída.
precisão Número de casas no ponto flutuante.
tipo de saída Conversão de tipos.
formato Indica se a saída é do tipo inteiro, flutuante, caracter, string, etc.


  Flags

Flag Descrição
- Alinhamento à esquerda, preenchendo com brancos à direita. Se não for utilizado, o texto é alinhado à direita, preenchendo-se à esquerda com zeros ou brancos.
+ Sinaliza resultado numérico com o sinal de (+) ou de (-).
branco Se o resultado for positivo, sinaliza com um branco. Se negativo, sinaliza com o sinal de menos (-).
# Especifica que aquele argumento deve ser convertido utilizando-se uma maneira alternativa.


  Largura

Largura Descrição
n Pelo menos n caracteres são impressos. Se o valor tiver menos caracteres que n, preenche-se o resto com brancos.
0n Pelo menos n caracteres são impressos. Se o valor tiver menos caracteres que n, preenche-se o resto com zeros.
* A lista de argumentos fornece a largura, que deverá preceder o verdadeiro argumento a ser formatado.


  Precisão

Precisão Descrição
nada Precisões default:
1, para os tipos d, i, o, u, x, X.
6, para os tipos e, E, f.
Todos os dígitos significativos para os tipos g, G.
Imprima o primeiro caracter nulo dos tipos s.
Sem efeito, para os tipos c.
0 Para os tipos d, i, o, u, x, X, a precisão é ajustada para a default.
Para os tipos e, E, f, nenhum ponto decimal é impresso.
n n caracteres ou n casas decimais. Se o resultado tiver mais de n caracteres, o resultado será truncado ou arredondado (isto depende do tipo do caracter). 
* A lista de argumentos fornece a largura, que deverá preceder o verdadeiro argumento a ser formatado.


  Tipo de Saída

Tipo de Saída Tipo de Argumento Argumento é interpretado como
F Ponteiro (P, s, n) far pointer
N Ponteiro (P, s, n) near pointer
h d i o u x X short int
l d i o u x X
e E f g G
long int
double
L e E f g G long double


  Formato

Formato Tipo Descrição
d Inteiro Inteiro sinalizado.
i Inteiro Inteiro sinalizado.
o Inteiro Octal não sinalizado.
u Inteiro Inteiro não sinalizado.
x Inteiro Hexadecimal, com letras minúsculas. Ex: a0.
X Inteiro Hexadecimal, com letras maiúsculas. Ex: A0.
f Ponto flutuante Valor sinalizado de ponto flutuante.
e Ponto flutuante Valor sinalizado de ponto flutuante, com notação científica (1.23e-12).
g Ponto flutuante Alterna para f ou e, dependendo da formatação.
E Ponto flutuante Valor sinalizado de ponto flutuante, com notação científica (1.23E-12).
G Ponto flutuante Idem de g para E.
c Caracter Um simples caracter.
s String Imprime uma cadeira de caracteres até que se encontre o caracter "null-terminator".
% Nada Imprime o caracter %.
n Ponteiro para int Armazena (no local apontado pelo argumento de entrada) a quantidade de caracteres escritos desde então.
p Ponteiro Imprime o argumento de entrada como um ponteiro.


  Formatando a String

  A formatação do texto começa com o caractere "%". Os argumentos são as variáveis passadas para o formatador, localizadas depois do texto entre aspas. Para n argumentos, a correlação de formatação é feita da seguinte forma:

 printf("%1 %2 %3 ...", 1, 2, 3,...);

  Exemplo:
 printf("O aluno %s teve média %f em história.\n", nome, media);

  Um exemplo para formatar um número inteiro que tenha sempre 3 dígitos é:
  int gols = 15;
  printf("Gols no campeonato: %03d", gols);

  Outro exemplo para formatar um número real que tenha 2 casas decimais é:
  double peso = 45.12345;
  printf("Peso: %.2f", peso);


/MARMSX/CURSOS/C--