Baixe o app para aproveitar ainda mais
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()).
Compartilhar