Buscar

a03_t18_leitura3

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

Prévia do material em texto

1 
Buffer do teclado: problema ou facilidade? 
As funções getchar() e fgetc() e scanf() permitem que o usuário visualize o que está 
sendo digitado, possibilitando usar a tecla backspace para apagar se precisar. 
 
Isso só é possível porque o buffer do teclado está sendo usado, e somente depois que 
a tecla enter for pressionada, é que os caracteres serão transferidos. 
Sabemos que, algumas vezes, poderá permanecer no buffer, principalmente, o código 
da tecla enter, impossibilitando a liberação do teclado para uma nova leitura do tipo 
char. 
 
Queremos deixar claro que esse problema também pode acontecer para leitura 
numérica, mas por problema na execução quando, por exemplo, um usuário digita 
mais caracteres do que a variável suporta, havendo o que chamamos de estouro de 
buffer. 
 
Você deve ter notado no último código, a presença de fflush(stdin) após o uso da 
função getchar(). 
 
Essa função serve para “limpar o buffer do teclado” e foi necessária porque quando se 
digitou um caracter e a tecla enter, somente o caracter foi transferido para a 
variável, permanecendo no buffer o código da tecla enter que impediria a liberação 
do teclado. 
 
Muitas vezes, quando tivermos certeza de estar presente somente esse código, 
podemos limpar a foc fgetc(stdin); ou getchar();. Isso acontece na alternância de 
uma leitura numérica com leitura de um caracter. 
 
Agora vamos aprender algumas funções para ler vetores de char. 
Como ainda não estudamos como se declara um vetor de char, não entraremos muito 
em detalhes, mas pedimos que retorne à essa aula quando estudarmos matrizes. 
 
gets biblioteca stdio.h 
 
 
 
 2 
 
Definição 
Ler um vetor de char e atribuindo o terminador nulo \0 à última posição. 
 
Como a própria mensagem no Linux avisa: “é perigosa”. 
Isso se dá porque todos os caracteres lidos por ela são enviados 
para a variável, mesmo que ultrapasse o tamanho declarado para 
ela. Normalmente, não usamos devido a esse problema. 
 
Sintaxe 
 
 
fgets biblioteca stdio.h 
 
Definição 
Ler um vetor de char de um arquivo, atribuindo o terminador nulo \0 à última 
posição. 
 
É uma função com 3 argumentos, sendo o último, um ponteiro de arquivo. 
Tudo que foi dito para fgetc(), serve para fgets() no que diz respeito a usar a 
constante stdin no lugar da variável ponteiro. 
A seguir, a sintaxe que usaremos por enquanto para fgets(). 
 
Sintaxe 
 
 
Use sempre essa função para ler um vetor de char quando existir 
uma pequena possibilidade da resposta ter mais de uma palavra. 
 
 
 
 3 
Lembre-se dessa nota! 
 
Depois de todas as funções vistas, chegou a hora de apresentar a função formatada de 
entrada de dados da linguagem C e alguns de seus recursos. 
 Avance para o próximo tópico do menu (Função scanf()).

Continue navegando