Fgets para Ler String em C
Nessa aula, nós vamos aprender uma terceira forma de fazermos a leitura de string de texto na linguagem de programação C.
Nessa aula nós vamos aprender a utilizar a função fgets e é uma opção muito interessante para fazer a leitura de texto na linguagem de programação C, e também é bastante simples a sua utilização.
É uma outra opção para a leitura de texto, a função fgets e a sua utilização, ela é bastante simples, olha só, a função recebe três parâmetros, então assim ela é bem configurável.
O primeiro parâmetro é o vetor onde eu quero salvar o texto que vai ser lido; o segundo parâmetro é a quantidade de caracteres que pode ser lido; e o terceiro parâmetro é de onde será feita a leitura.
O computador possui vários buffers, o que é um buffer?
Um buffer é uma região de memória temporária, onde as informações ficam ali por um tempo bem breve, por um tempo bem curto, e existe em todo o computador um buffer especial que é o buffer do teclado, toda vez que você digita informações no teclado, tudo o que está sendo digitado vai primeiro para esse buffer, que é essa região especial de memória separada para o teclado, e dali ela vai então para alguma outra região, ou para um arquivo, ou para o processador, ou para o HD, então depois que essa informação está no buffer, ela então é direcionada para uma outra região.
Então de onde fazer as leituras?
Pode ser feito de diversos buffers diferentes, nós faremos especificamente do buffer padrão do computador, do buffer
de entrada padrão.
e aí nós já já veremos que buffer é esse.
Vamos ver então um exemplo com vetor com quantidade e com o buffer de entrada.
Perceba que é bastante simples, olha só, temos aqui o nome da nossa função, fgets, temos aqui o nome do nosso vetor, perceba que é o primeiro parâmetro, temos aqui a quantidade, cinquenta, e aí perceba que aqui tem uma diferença se comparado com a função scanf, na função scanf, que você já deve conhecer, se eu tenho um vetor tamanho cinquenta quando eu vou especificar aqui a quantidade máxima, eu tenho que colocar quarenta e nove, por causa do delimitador de fim de string; a função fgets é um pouquinho mais inteligente, eu passo para ela o tamanho do vetor e ela se vira, ela sabe que se o vetor tem tamanho cinquenta, ela pode ler no máximo quarenta e nove caracteres e na última oposição vai ficar o delimitador do fim de strings; E temos aqui o stdin que é a entrada padrão de todo o computador;isso aqui traduzindo do inglês para o português, isso aqui é a abreviação de standard input, ou seja, entrada padrão, exceto se você alterou isso; em todo o computador a entrada padrão é o teclado, então é dessa forma que eu digo para a função fgets que ela deve ler do buffer de entrada padrão, que é o teclado.
E então tenho aqui apenas alguns comentários, olha só, o vetor onde eu vou salvar o texto lido, o tamanho desse nosso vetor e standard input, que é entrada padrão, traduzindo literalmente do inglês para o português.
Vamos ver um exemplo lá no Code Blocks utilizando fgets?
Então vem comigo!
Eu estou aqui no Code Blocks, tenho um vetor aqui chamado nome completo, tamanho cinquenta, na linha sete eu estou pedindo o usuário “digite seu nome completo” e aqui na linha oito, olha só temos aqui a função fgets, passando o nome do vetor onde vou salvar o texto que vai ser digitado, o tamanho do nosso vetor, cinquenta, e stdin, que é standard input, entrada padrão do computador.
Perceba que dependendo a IDE que você esteja utilizando, quando você começa a digitar std, ele já te dá algumas opções, então a gente tem um buffer de erro, a gente tem o buffer de entrada, a gente tem um buffer de saída, nós queremos o input, o buffer de entrada, isso é um recurso, não é um recurso da linguagem C, é um recurso da IDE, você começa a digitar o nome e ele te dá algumas opções, aqui no Code Blocks ele já faz isso que ajuda, que acelera aí a programação.
Por fim, aqui na linha nove, temos um printf apenas para imprimir o nome que vai ser lido, eu vou compilar e executar aqui o meu programa, vamos ver o resultado?
Eu vou digitar aqui então a nosso usuária padrão Maria Madalena, vou pressionar enter e aí olha só, seu nome completo, está faltando um u novamente, Maria Madalena; perceba que a gente conseguiu ler sem nenhum problema.
Vamos colocar aqui o u, pronto!
Agora eu vou alterar, olha só, vou colocar aqui dez, vou colocar aqui também dez, porque agora o tamanho do meu vetor é dez, eu alterei o programa, então eu vou compilar e executar novamente.
Agora, olha só, Maria Madalena, vou pressionar enter, ele leu um, dois, três, quatro, cinco, seis, sete, oito, nove; a função leu nove caracteres, porque a décima posição ele colocou o carácter de fim de string; então nesse quesito a função fgets é um pouquinho mais inteligente que a função scanf, você passa o tamanho do vetor e ela se vira, ela vai ler tam menos um caractere, e aí na última posição olhe, ela já preenche com o carácter de fim de string.