C – Entrada/Saída

Função printf()

A função printf() já foi apresentada e explicada de forma simplificada no primeiro artigo. Agora teremos a oportunidade de rever esses conceitos e aprofundar mais no assunto.

Essa função tem por finalidade imprimir dados na tela. Isto é feito através da sintaxe:

printf(“expressão de controle”, lista de argumentos);

Na “expressão de controle” são inseridos todos os caracteres a serem exibidos na tela e/ou códigos de formatação, responsáveis por indicar o formato em que os argumentos devem ser impressos. Esses argumentos devem estar incluídos na “lista de argumentos” e caso contenha mais de um devem ser separados por virgula. A lista abaixo mostra os tipos de códigos de formatação permitido na linguagem C.

Código de formatação Descrição
%c Caracteres simples
%d Inteiros decimais com sinal
%I Inteiros decimais com sinal
%e Notação cientifica (e minúsculo)
%E Notacão cientifica (E maiúsculo)
%f Ponto flutuante decimal
%g Usa %e ou %f (qual for mais curto)
%G Isa %E ou %F (qual for mais curto)
%o Octal sem sinal
%s Cadeia de caracteres
%u Inteiros decimais sem sinal
%x Hexadecimal sem sinal (letras minúsculas)
%X Hexadecimal sem sinal (letras maiúsculas)
%% Escreve o símbolo de porcentagem (%)

Tabela 1: Tipos de códigos de formatação

Ao colocar em printf() os comandos %e ou %E estaremos imprimindo em notação cientifica. No caso de usarmos “%g” ou “%G” o compilador decide se escreve em ponto flutuante ou notação cientifica, o qual for mais curto. Veja o exemplo abaixo:

Os códigos especiais (barra invertida) são apresentados abaixo e também pode ser inseridos na “expressão de controle”. Veja a descrição de cada um deles:

Código especial Descrição
n Nova linha
t Tab
b Retrocesso
Aspas
\ Barra
f Salta formulário
Nulo

 

Tabela 2: Tipos de códigos especiais

É possível também especificar o tamanho do campo, o número de casas decimais e justificar à esquerda a saída.

Ao colocar um número entre o símbolo % e o código de formatação estamos especificando a largura mínima do campo. Ou seja, caso o comprimento da saída seja menor ela é completada com espaços. Podemos também completar com zeros para isto coloca-se antes do número especificador de largura um zero. Por exemplo, colocaríamos %08d para que um inteiro decimal com um número de dígitos inferior a oito seja completado com zeros.

Para indicar a precisão logo após o especificador de largura coloca-se um ponto seguido de um número inteiro. Quando se aplica a precisão em ponto flutuante estamos indicando o número de casas decimais que será mostrado. Por exemplo, %12.5f significa que o número ponto flutuante terá tamanho doze com cinco casas decimais. Já no caso do %g ou %G indica a quantidade de dígitos significativos. E em string especifica o numero Maximo de caracteres.

Por padrão a saída é justificada à direita, mas pode ser justificada à esquerda quando acrescentamos logo atrás do “%” um sinal negativo. Por exemplo, %-12.5f.

 

Função scanf()

A função scanf() permite ler os dados de entrada do teclado. O seu uso é muito comum nos programas, como podemos verificar em outros artigos. Veja agora a sua sintaxe que é muito parecida com a do printf().

scanf(“expressão de controle”, argumentos);

A “expressão de controle” é composta pelos códigos de formatação apresentados anteriormente que indica o tipo do dado a ser lido. A quantidade de argumentos deve ser igual a dos códigos de formatação e separadas por virgulas. A lista de argumentos deve ser constituída pelos endereços das variáveis. Para isto usamos o operador de endereço “&” que deve preceder o nome da variável que se deseja atribuir o valor da entrada. É necessário que o tipo de dado do argumento seja compatível com os códigos de formatação. Exemplo:

As funções printf() e scanf() fazem parte da biblioteca padrão de entrada e saída de dados. Portanto deve-se incluir a biblioteca “stdio.h” através da diretiva “include”. Isto é incluir a seguinte linha no começo dos programas: “#include<stdio.h>”.

 

Trabalhando com caracteres

Embora scanf() e printf() possa ser usadas para ler e escrever caracteres respectivamente, existem outras. Um exemplo disso são as funções getchar() e putchar() também pertencentes na biblioteca padrão c “studio.h”.

 

Função getchar()

Esta função é responsável por lê um caractere do teclado. Veja o exemplo abaixo:

A função original getchar() baseado em UNIX armazena a entrada no buffer até que seja pressionado ENTER. O que pode ser desagradável em ambientes interativos, pois deixa um ou mais caracteres esperando na fila depois que getchar() retorna. O padrão ANSI determina que a função getchar() pode ser implementada de forma interativa, mas na prática isso raramente acontece. Para resolver este problema pode-se utilizar outras funções alternativas como as getch() e getche().

 

Função putchar()

Escreve na tela um caractere a partir da posição atual do cursor. Veja nosso próximo exemplo.

Qualquer código barra invertida apresentado na tabela 2 podem ser usados com a função putchar(), como mostrado no programa acima.

 

As funções getch() e getche()

As funções getch() e getcher() retornam imediatamente após uma tecla ser pressionada. A única diferença é que a getch() não mostra o caractere na tela enquanto que a getche() mostra. Na maioria dos compiladores C, a biblioteca a ser inserida no programa para utilizar essas duas funções é a “conio.h”. Essas funções serão usadas em programas futuros.

 

Trabalhando com string

Para ler e escrever strings por meio do console podemos também usar as funções gets() e puts() respectivamente. Sendo que os protótipos dessas funções são encontrados em “stdio.h”.

 

 

As funções gets() e puts()

Usando gets() é possível inserir caracteres pelo teclado até que o Enter seja pressionado. No final da string é colocado um terminador nulo e então a função retorna.

A função puts() pode receber os códigos de barra invertida apresentados na tabela 2 neste artigo e é considerada muito mais rápida do que o printf(). O único problema é que puts() trabalha apenas com string de caracteres enquanto que o printf() trabalha com todos os tipos de dados.

 Fonte: http://www.juliobattisti.com.br/tutoriais/katiaduarte/cbasico005.asp

Deixe um comentário