• Nenhum resultado encontrado

modificador h instrui a função printf( ) a exibir um short int. Portanto, %hu indica que o dado é do tipo short unsigned int.

N/A
N/A
Protected

Academic year: 2021

Share "modificador h instrui a função printf( ) a exibir um short int. Portanto, %hu indica que o dado é do tipo short unsigned int."

Copied!
7
0
0

Texto

(1)

modificador h instrui a função printf( ) a exibir um short int. Portanto, %hu indica que o dado é do tipo short unsigned int.

O modificador l também pode prefixar os comandos em ponto flutuante de e, f e g para indicar que um double o segue. O modificador L especifica um long double.

Com a função printf( ), você pode enviar virtualmente qualquer formato de dado que desejar. Veja os exemplos abaixo.

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, frequentemente 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);

Os especificadores de formato de entrada são precedidos por um sinal % e dizem à função scanf( ) qual tipo de dado deve ser lido em seguida. Esses códigos são listados na tabela a seguir. Por exemplo, %s lê uma string enquanto %d lê um inteiro.

(2)

Código Significado

%c Lê um único caractere %d Lê um decimal inteiro

%i Lê um decimal inteiro (não pode ser octal ou hexadecimal) %u Lê um decimal sem sinal

%e Lê um número em ponto flutuante com sinal opcional %f Lê um número em ponto flutuante com ponto opcional %g Lê um número em ponto flutuante com expoente opcional %o Lê um número em base octal

%s Lê uma string

%x Lê um número em base hexadecimal %p Lê um ponteiro

%ld Lê um decimal inteiro longo

%li Lê um decimal inteiro (não pode ser octal ou hexadecimal) longo %lu Lê um decimal sem sinal longo

%le Lê um número em double com sinal opcional longo %lf Lê um número em double com ponto opcional longo %lg Lê um número em double com expoente opcional longo %lo Lê um número em base octal longo

%lx Lê um número em base hexadecimal longo %hd Lê um decimal inteiro longo

(3)

%hi Lê um decimal inteiro (não pode ser octal ou hexadecimal) curto %hu Lê um decimal sem sinal curto

%ho Lê um número em base octal curto

%hx Lê um número em base hexadecimal curto

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, ou por l (letra ele) 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 por l (letra ele) para indicarem que um apontador para double ao invés de float está na lista de argumentos.

A cadeia de formato geralmente contém especificações de conversão, que são usadas para controlar a conversão da entrada. A cadeia 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.

Um caractere que não seja um espaço em branco faz com que a função scanf( ) leia e descarte o caractere correspondente. 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. Se o caractere especificado não é encontrado, a função scanf( ) terminará.

(4)

Todas as variáveis usadas para receber valores por meio da função scanf( ) deverão ser passadas pelos seus endereços. Por exemplo, para ler um inteiro em uma variável count , você poderia usar a seguinte chamada à função scanf( ) :

As strings serão lidas em vetores (cadeias de caracteres) e o nome do vetor é o endereço do primeiro elemento do vetor. Então, para ler uma string no vetor de caracteres nome, você deve usar o seguinte comando:

Nesse caso, nome já tem um endereço e não precisa ser precedido pelo operador &.

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. Isso significa que...

Aceitará uma entrada dos números 10 20, mas falhará com 10,20. Como na função printf( ), os códigos de formato da função scanf( ) devem ser correspondidos na ordem com as variáveis que estão recebendo a entrada na lista de argumento.

Um * colocado depois do % e antes do código de formato lerá um dado de um tipo especificado, mas suprimirá a sua atribuição. Assim,

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.

Os comandos de formato podem especificar um campo modificador de comprimento máximo. Esse modificador é um número inteiro colocado entre o sinal

(5)

% e o código de comando de formato, que limita o número de caracteres lidos para qualquer campo. Por exemplo, para ler não mais que 20 caracteres em str, você pode escrever:

Se o apontador de entrada é maior do que 20 caracteres, uma chamada

subsequentes para entrada começará onde ela pára. Por exemplo, se você digitar ABCDEFGHIJKLMNOPQRSTUVWXYZ

em resposta à chamada scanf( ), nesse exemplo, somente os 20 primeiros caracteres, até o “T”, serão colocados em str por causa do especificador de tamanho máximo. Isso significa que os caracteres restantes “UVWXYZ” não são usados. Se uma outra chamada à função scanf( ) é feita, tal como:

Então “UVWXYZ” é colocado em str. A entrada para o campo pode ser terminada, antes que o campo de comprimento máximo seja alcançado, se um caractere de espaço em branco é encontrado. Nesse caso, 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, estes últimos são lidos como qualquer outro caractere. Por exemplo, com uma entrada de “x y”;

retornará com o caractere “x” em a, um espaço em b e o caractere “y” em c.

Você não pode usar a função scanf( ) para exibir uma mensagem ao usuário. Portanto, todas as mensagens devem ser feitas explicitamente antes da chamada à função scanf( ).

(6)

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:

Experimente esse programa usando a entrada “123456789abcdefg987654”, seguida por um retorno de carro. O programa exibirá, então:

Uma vez que “a” não faz parte do scanset, a função scanf( ) pára de ler os caracteres em s1 quando ele é encontrado e os caracteres restantes são colocados em s2.

Você pode especificar um intervalo dentro de um scanset usando um hífen. Por exemplo, isto diz à função scanf( ) para aceitar os caracteres de A a Z:

Você pode especificar um conjunto invertido se o primeiro caractere é um ^. Quando está presente, o ^ instrui a função scanf( ) a aceitar quaisquer caracteres

(7)

que não estão definidos no scanset.

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.

Referências

Documentos relacionados

Varr edura TCP Window ( cont inuação) ACK- win manipulado Não Responde ACK- win manipulado ICMP Tipo 3 Firewall Negando Firewall Rejeitando Scanner de Porta... Var r edur a FI N/

Concentração de determinada substância, acima da qual podem ocorrer alterações prejudiciais à qualidade do solo e da água subterrânea VALOR DE PREVENÇÃO -

Na semana entre os dias 7 e 11 de maio, o mercado deve continuar a acompanhar os mesmos pilares (leia-se Europa) para determinar o desempenho do período, acompanhando os

15.6 - Os pedidos de esclarecimentos referentes a este processo licitatório deverão ser enviados ao pregoeiro, até três dias úteis anteriores à data fixada para abertura da

Está sempre ligada a um verbo da oração principal, sem auxílio de preposição, indicando o alvo sobre o qual recai a ação desse verbo. .. Ex: Quero

Assim, com o aprofundamento e a apreciação das perspectivas educacionais, esta estratégia não apenas vai contribuir para uma estruturação inter-pessoal

A comunicação desenvolve o tema de aplicação do conceito gestão do risco precisamente ao risco de gestão dos recursos hídricos, focando os processos de decisão e de

Diferentemente do prazo fixado para pagamento dos precató- rios, as RPVs são depositadas pelos Tribunais Regionais Federais nos bancos ofi- ciais, mensalmente, obedecido o prazo de