
paulo1205
(usa Ubuntu)
Enviado em 29/08/2013 - 02:30h
fgets() não é para ler dados de arquivos, mas sim dados de qualquer
stream de entrada.
Qualquer fonte de dados -- seja ela um arquivo, um teclado, uma porta serial, um canal de comunicação por rede ou um mecanismo de obtenção de dados gerados por outro programa na mesma máquina -- poderia, em princípio, estar ligada a um
stream de entrada.
stdin é um caso particular de
stream de entrada, que normalmente é associado ao teclado do terminal ou console no qual se dispara a execução do programa.
E uma correção à informação dada pelo colega, acima. A função
gets() não "se tornou" insegura porque seu funcionamento nunca mudou desde que a função foi especificada. Ela já nasceu insegura. É o típico caso de uma implementação provisória e relapsa de uma função, feita rapidamente e para "quebrar um galho", e que acabou ficando permanente, porque todo mundo a adotou por conveniência, esquecendo que ela tinha uma severa restrição de aplicação -- e que é grave, porque o programa nem mesmo tem como verificar nem mesmo em tempo de execução, e muito menos no momento da compilação.