Вы находитесь на странице: 1из 16

Programação II

ACETATOS DAS AULAS TEÓRICAS - 2011


Comandos de Entradas e Saída Padrão
2

 Para Imprimir mensagens no ecrã ou ler dados do teclado, o C dispõe das


funções printf() e scanf()
 A função scanf() é usada para ler dados do teclado.
 Formato do scanf()
scanf (“string_de_controle”, lista_de_argumentos);
 A string_de_controlo diz ao scanf() qual o tipo de dados vai ser lido do
teclado, naquela posição.
 Isto é feito usando-se os códigos de controle, que usam a notação %
 É obrigatório que, para cada código de controle, se tenha um argumento
na lista_de_argumentos
 A lista_de_argumentos contem os argumentos separados por vírgula ‘,’
 Cada argumento da lista_de_argumentos deve ser precedido do operador
endereço ‘&’, isto não se aplica para a leitura de Strings (nome da
variável é o endereço para o primeiro elemento do vector…)
IMETRO/FATEC/LCC-BIF Prog II/ M.T.Ditutala
Scanf() – Lista de Códigos
3

 Abaixo os códigos possíveis para a String_de_Controlo do Scanf()

IMETRO/FATEC/LCC-BIF Prog II/ M.T.Ditutala


Scanf() – Lista de Códigos
4

 Na tabela anterior:
 Os caracteres de conversão d, i, o, u e x podem ser
precedidos por
 h para indicarem que um apontador para short ao invés
de int aparece na lista de argumentos,
 l para indicar que um apontador para long aparece na
lista de argumentos.
 Semelhantemente, os caracteres de conversão e, f e g
podem ser precedidos
 l para indicarem que um apontador para double ao
invés de float está na lista de argumentos

IMETRO/FATEC/LCC-BIF Prog II/ M.T.Ditutala


Scanf() – Lista de Códigos
5

 Na tabela anterior:
 A String_de_Controlo de formato pode conter:
 espaços, tabulações e novas linhas, que serão ignorados;
 caracteres comuns (não %), que devem combinar com o
próximo caractere não espaço do fluxo de entrada;
 especificações de conversão, consistindo no caractere %,
um caractere * opcional de supressão de atribuição,
um número opcional especificando um tamanho máximo
do campo, um h ou l opcional indicando o
tamanho do destino, e um caractere de conversão.

IMETRO/FATEC/LCC-BIF Prog II/ M.T.Ditutala


Scanf() – Lista de Códigos
6

 Na String_de_Controlo
 Um caractere que não seja um espaço em branco faz com que a função
scanf( ) leia e descarte o caractere correspondente
 Se o caractere especificado não é encontrado, a função scanf( )
terminará
 Por exemplo, “%d,%d” faz com que a função scanf( ) leia um inteiro,
então, leia uma vírgula (que será descartada) e, finalmente, leia
outro inteiro
scanf(“%d,%d”, &a, &b); //Exemplo de entrada válida 10,15
 Os itens de dados de entrada devem ser separados por:
 Espaços, tabulações ou novas linhas.

 Pontuações como vírgula, ponto-e-vírgula e semelhantes não contam


como operadores
 scanf(“%d%d”, &r, &c); //entrada válidas 10 20, mas falhará com 10,20
IMETRO/FATEC/LCC-BIF Prog II/ M.T.Ditutala
Scanf() – Lista de Códigos
7

 Na String_de_Controlo
 Um * colocado depois do % e antes do código de formato lerá
um dado de um tipo especificado, mas suprimirá a sua atribuição.
scanf(“%d%*c%d”, &x, &y);
 Dando-se a entrada 10/20, colocará o valor 10 em x
descartando o sinal de divisão, e dará a y o valor 20
 A String_de_controlo pode especificar um campo modificador de
comprimento máximo.
 Esse modificador é um número inteiro colocado entre o sinal % e o
código de comando de formato, que limita o número de
caracteres lidos para qualquer campo
 scanf(“%20s”, str); //lê até 20 caracteres e guarda-os em str
 Os restantes caracteres ficam disponível no buffer para
próxima leitura
IMETRO/FATEC/LCC-BIF Prog II/ M.T.Ditutala
Scanf() – Lista de Códigos
8

 Na String_de_Controlo
 Se um caractere de espaço em branco é encontrado, a função scanf( )
move-se para o próximo campo
 Ainda que espaços, tabulações e novas linhas sejam usados como
separadores de campos, quando da leitura de um único caractere, esses
últimos são lidos como qualquer outro caractere
 Por exemplo, para a entrada “x y”;
 scanf(“%c%c%c”, &a, &b, &c); retornará com o caractere “x” em a, um
espaço em b e o caractere “y” em c
 Não se pode usar a função scanf( ) para exibir uma mensagem no
ecrã.
 Portanto, todas as mensagens devem ser feitas explicitamente antes da
chamada à função scanf( )

IMETRO/FATEC/LCC-BIF Prog II/ M.T.Ditutala


Scanf() – Lista de Códigos
9

 Na String_de_Controlo
 Podemos usar o scanset, para definir a lista de caracteres que o Scanf poderá
ler
 Neste caso 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 chavetas. A chaveta inicial deve ser prefixada por um
sinal de percentagem
 O argumento correspondente a scanset deve ser uma variável string.
 Após retornar de função scanf( ), a variável conterá uma string
terminada com um NULO com os caracteres lidos
scanf (“%[1234567890]%s”, s1, s2);
IMETRO/FATEC/LCC-BIF Prog II/ M.T.Ditutala
Scanf() – Lista de Códigos
10

 Na String_de_Controlo
 Você pode especificar um intervalo dentro de um scanset usando
um hífen.
%[A-Z]
 Pode-se especificar mais de um intervalo dentro de um scanset
%[a-z0-9]
 Para indicar ao Scanf() para ler apenas os caracteres que não
constam do Scanset deve-se usar no Scanset como primeiro
caractere o ‘^’ :
%[^val1-val2]
 o scanset diferencia letras minúsculas de maiúsculas.
 Portanto, se você quiser examinar tanto letras maiúsculas como
minúsculas, deve especificá-las individualmente
IMETRO/FATEC/LCC-BIF Prog II/ M.T.Ditutala
Comandos de Entradas e Saída Padrão
11

 A função pritnf() é usada para mostrar qualquer mensagem na tela


(ecrã).
 Formato do printf()
printf (“string_de_controle”, lista_de_argumentos);
 A string_de_controlo tem a descrição de tudo o que o printf() vai
imprimir no ecrã.
 Na string de controle indica-se quais, de qual tipo e em que posição estão
as variáveis a serem apresentadas
 Isto é feito usando-se os códigos de controle, que usam a notação %
 É obrigatório que, para cada código de controle, se tenha um argumento
na lista_de_argumentos
 A lista_de_argumentos contêm os argumentos separados por vírgula ‘,’

IMETRO/FATEC/LCC-BIF Prog II/ M.T.Ditutala


Comandos de Entradas e Saída Padrão
12

 A função pritnf() é usada para mostrar qualquer mensagem na tela


(ecrã).
 Formato do printf()
printf (“string_de_controle”, lista_de_argumentos);
 A string_de_controlo tem a descrição de tudo o que o printf() vai
imprimir no ecrã.
 Na string de controle indica-se quais, de qual tipo e em que posição estão
as variáveis a serem apresentadas
 Isto é feito usando-se os códigos de controle, que usam a notação %
 É obrigatório que, para cada código de controle, se tenha um argumento
na lista_de_argumentos
 A lista_de_argumentos contêm os argumentos separados por vírgula ‘,’

IMETRO/FATEC/LCC-BIF Prog II/ M.T.Ditutala


printf() – Códigos de Formatação
13

Código Significado
%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
%g Usa %e ou %f, o que for menor
%G O mesmo que %g, só que um E maiúsculo é usado se o formato %e for escolhido
%o Exibe um número em notação octal
%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
IMETRO/FATEC/LCC-BIF Prog II/ M.T.Ditutala
printf() – Códigos de Formatação
14

 A String_de_formato podem ter modificadores que especificam o


tamanho do campo, o número de casas decimais e um indicador de
justificação à esquerda
 Um inteiro colocado entre o sinal % e o comando de formato atua
como um especificador de largura mínima do campo
 Esse especificador preenche a saída com brancos ou zeros para
assegurar que o campo tenha o comprimento mínimo
 Por defeito o preenchimento é feito com espaços. Para alterar este
efeito, coloque um 0 (zero) antes do especificador de comprimento de
campo
 Por exemplo, %05d preencherá um número de menos de cinco
dígitos com zeros de maneira que seu tamanho total seja 5

IMETRO/FATEC/LCC-BIF Prog II/ M.T.Ditutala


printf() – Códigos de Formatação
15

 Para especificar o número de casas decimais impressas num número


em ponto flutuante, coloque um ponto decimal depois do especificador
de tamanho de campo seguido pelo número de casas decimais que
deseja mostrar
 Por exemplo, %10.4f exibirá um número de, no mínimo, dez
caracteres de comprimento com quatro casas decimais
 A mesma notação pode ser aplicada à strings ou inteiros. Neste caso o
número seguinte ao ponto especifica o comprimento máximo do
campo.
 Por exemplo, %5.7s exibirá uma string que terá, no mínimo, cinco
caracteres de comprimento e no máximo sete caracteres.
 Se for maior que o campo de tamanho máximo, a string será truncada

IMETRO/FATEC/LCC-BIF Prog II/ M.T.Ditutala


printf() – Códigos de Formatação
16

 Por definição, toda saída é justificada à direita:


Se a largura do campo é maior que o dado impresso,
o dado será colocado na extremidade direita do campo.
 Para forçar a justificação à esquerda coloca-se um
sinal de menos depois do %
 Por exemplo, %-10.2f justificará à esquerda um
número em ponto flutuante, com duas casas decimais, em
um campo de 10 caracteres
 Assim como ocorreu com o scanf(), o printf() também
suporta os modificadores h e l para a exibição de short,
long e double quando aplicados a d e f respectivamente

IMETRO/FATEC/LCC-BIF Prog II/ M.T.Ditutala

Вам также может понравиться