·
Função printf( )
Faz parte de um conjunto
de funções pré-definidas armazenadas em uma biblioteca padrão de rotinas da
linguagem C. Ela permite apresentar na tela os valores de qualquer tipo de
dado. Contudo, ela utiliza de mecanismos de formatação, que
permitem traduzir a representação interna de variáveis para a representação
ASCII que pode ser apresentada na tela.
O primeiro argumento
de printf é
uma string de controle. Esta string, que deve sempre
esta presente, tambem podendo conter caracteres especiais ("%d",
"%c", "%s" etc) que chamaram outros argumentos para a função. Estes outros argumentos serão
variáveis cujos valores serão formatados e apresentados na tela.
Por exemplo:
int x =12;
printf("Valor de x = %d", x);
sera impresso na tela a frase Valor de x = 12.
Outro exemplo:
char y = ‘A’;
int x =12;
printf("x = %d e y = %c\n", x, y);
imprime na tela a frase x = 12 e y = A
seguida pelo caráter de nova linha (\n), ou seja, a próxima
saída para a tela aconteceria na linha seguinte. Observe que a seqüência de
conversão pode ocorrer dentro de qualquer posição dentro do string de
controle.
A função printf não tem um número fixo de argumentos. Em
sua forma mais simples, pelo menos um argumento deve estar presente -- a string de
controle. Uma string de controle sem nenhuma seqüência de
conversão será literalmente impressa na tela. Com variáveis adicionais, a única
forma de saber qual o número de variáveis que será apresentado é por inspeção
da string de controle. Desta forma, cuidado deve ser tomado
para que o número de variáveis após a string de controle
esteja de acordo com o número de seqüências de conversão presente na string de
controle.
Além de ter o número
correto de argumentos e seqüências de conversão, o tipo de cada variável deve
estar de acordo com a seqüência de conversão especificada na string de
controle. A seqüência de conversão pode ser reconhecida dentro da string de
controle por iniciar sempre com o caráter %.
A forma geral da
função printf( ) é: printf (“string de controle”, lista de argumentos);
%c
|
Exibe um caractere
|
|
%d
|
Exibe um inteiro em formato decimal
|
|
%i
|
Exibe um inteiro
|
|
%e
|
Exibe um número em notação científica (com e
minúsculo)
|
|
%E
|
Exibe um número em notação científica (com E
maiúsculo)
|
|
%f
|
Exibe um ponto flutuante em formato decimal
|
|
%s
|
Exibe uma string
|
|
%u
|
Exibe um decimal sem sinal
|
|
%x
|
Exibe um número em hexadecimal com letras
minúsculas
|
|
%X
|
Exibe um número em hexadecimal com letras
maiúsculas
|
|
%%
|
Exibe um sinal de %]
|
|
%p
|
Exibe um ponteiro
|
|
·
Função scanf( )
A função scanf( ) é uma das funções de entrada de dados da
linguagem C. Ainda que possa ser usada para ler virtualmente qualquer tipo de
dado inserido por meio do teclado, freqüentemente você a usará para a entrada
de números inteiros ou de ponto flutuante. A forma geral da função scanf( ) é: scanf (“string de controle”, lista de argumentos);
%c
|
Lê um caractere
|
%d
|
Lêum inteiro
|
%i
|
Lê um inteiro (não pode ser octal ou
hexadecimal)
|
%e
|
Lê um número em ponto flutuante com sinal
opcional
|
%f
|
Lê um número em ponto flutuante com ponto
opcional
|
%s
|
Lê uma string
|
%x
|
Lê um número em base hexadecimal
|
%p
|
Lê um ponteiro
|
·
Chamada scanset
A função scanf( ) inclui também uma característica muito
poderosa chamada scanset.
Um scanset define uma lista de caracteres que serão correspondidos
por scanf( ).
A função scanf( ) continuará a ler caracteres enquanto
eles estiverem no scanset. Assim que um caractere entrado não corresponder a
qualquer um do scanset, a função scanf( ) segue para o próximo especificador de
formato (se existir). Um scanset é definido colocando-se uma lista de
caracteres que você quer que seja examinada entre chaves. A chave inicial deve
ser prefixada por um sinal de porcentagem.
Por exemplo, este scanset diz à função scanf( ) para ler somente os dígitos de 0 a 9:
#include <stdio.h>
void main()
{
char s1[80], s2[80];
scanf ("%[1234567890]%s", s1, s2);
printf ("\n%s| |%s",
s1, s2);
}
O programa exibirá, então:
123456789| |abcdefg987654
Você pode especificar mais de um intervalo dentro de um scanset.
Por exemplo, este programa lê dígitos e letras. Ele também ilustra que você
pode usar o especificador de campo máximo como um scanset.
#include <stdio.h>
void main()
{
char str[80];
printf ("Informe dígitos e letras: ");
scanf ("%78[a-z0-9]", str);
printf ("\n%s",
str);
}
Você pode especificar um conjunto invertido se o primeiro
caractere é um ^. Quando está presente, o ^ instrui a função scanf( ) a aceitar
quaisquer caracteres que não estão definidos no scanset.
Inportante:
Um ponto importante a lembrar é que o scanset difere letras
minúsculas de maiúsculas. Portanto, se você quiser examinar tanto letras
maiúsculas como minúsculas, deve especificá-las individualmente.
Qual quer duvida ou sugestão deixe um comentário.
Para dar continuidade aos posts sobre linguagem C, escolha um dos links abaixo:
“Nossa vida é o que nossos pensamentos a fazem.”(Marco Aurélio)
Este comentário foi removido pelo autor.
ResponderExcluirA rotina scanf e muito útil mais não podemos deixar de lado os outros métodos de captura de dados como os da biblioteca conio.h
ResponderExcluirPara quem quiser ver um vídeo sobre scanf eu vou deixar este link que mostra o comando na pratica.
Click aqui para ver o video
Obrigador Jonathan pela indicação, já estou recomendando o vídeo :)
Excluir