#+title: Curso Básico da Linguagem C #+subtitle: Exercícios #+author: Blau Araujo #+startup: show2levels #+options: toc:3 * Exercícios da aula 14: Abertura de arquivos para leitura - [[../../aulas/14-rfiles/README.org][Anotações da aula]] - [[https://www.youtube.com/watch?v=uh3UdYyzXRM][Vídeo]] ** O arquivo =/etc/passwd= Cada linha do arquivo =/etc/passwd= representa um usuário do sistema e tem o seguinte formato: #+begin_example nome:senha:uid:gid:gecos:home:shell #+end_example #+begin_quote O termo /GECOS/ vem de /General Electric Comprehensive Operating Supervisor/, e era o nome de um antigo sistema operacional do início dos anos 1960. Como as primeiras versões do Unix precisavam interagir com o ambiente GECOS, o campo foi introduzido em =/etc/passwd= para receber informações de contato do usuário em um formato compatível (nome completo, sala, ramal, etc). #+end_quote Exemplo: #+begin_example blau:x:1000:1000:Blau Araujo:/home/blau:/bin/bash #+end_example Com base nisso... *** 1. Impressão do conteúdo do arquivo Abra =/etc/passwd= para leitura e imprima todo seu conteúdo, linha por linha. *** 2. Número de usuários Leia o arquivo e imprima a quantidade total de usuários no seu sistema. *** 3. Busca de usuários Tendo o nome de um usuário como argumento (por exemplo, =root=), imprima apenas a linha de =/etc/passwd= correspondente. #+begin_quote Dica: utilize funções como =strstr= ou =strncmp= para encontrar strings nas linhas, mas cuidado com os /falsos positivos/! #+end_quote *** 4. Informações de usuários Tendo um nome de usuário como argumento, imprima seus dados no formato: #+begin_example Login : ... GECOS : ... Diretório home: ... Shell padrão : ... #+end_example #+begin_quote Dica: a função =strtok= pode ser uma ótima opção para separar a linha em campos, mas não é a única opção. #+end_quote