300x250 AD TOP

Blogger news

AD (728x90)

Tecnologia do Blogger.

Colaboradores

Seguidores

Postagens populares

Tagged under:

Linguagem C - printf(), scanf() e scanset.


·         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.

“Nossa vida é o que nossos pensamentos a fazem.”(Marco Aurélio)

3 comentários:

  1. Este comentário foi removido pelo autor.

    ResponderExcluir
  2. A 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

    Para 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

    ResponderExcluir
    Respostas
    1. Obrigador Jonathan pela indicação, já estou recomendando o vídeo :)

      Excluir