Ao pesquisar sobre E/S de arquivos em C, me deparei com duas funções: fgetc()
e read()
.
//code1.c
#include <stdio.h>
int main(void)
{
char ch;
ch = fgetc(stdin);
return 0;
}
//code2.c
#include <unistd.h>
int main(void)
{
char ch;
read(STDIN_FILENO, &ch, 1);
return 0;
}
Em ambos os programas acima, se eu digitar hello
:
O primeiro, armazenará a entrada do teclado (stdin)
ch
e o programa simplesmente terminará. O que significa quech
conteráh
e os caracteres restantes simplesmente desaparecerão.No segundo programa, a entrada do teclado também será armazenada em
ch
. Mas os caracteres restantes (ello
) não desaparecerão. Em vez disso, eles serão passados para o terminal como um comando após o término do programa.
Não consigo entender por que isso está acontecendo? É algo relacionado a como as entradas são armazenadas em buffer em C (e por computadores em geral)?