exercícios da aula 14

This commit is contained in:
Blau Araujo 2025-05-05 11:21:38 -03:00
parent c4735f936c
commit a11d1c9c75

69
exercicios/14/README.org Normal file
View file

@ -0,0 +1,69 @@
#+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, na AT&T, 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