mirror of
https://gitlab.com/blau_araujo/cblc.git
synced 2025-05-09 18:16:37 -03:00
exercícios da aula 14
This commit is contained in:
parent
c4735f936c
commit
a11d1c9c75
1 changed files with 69 additions and 0 deletions
69
exercicios/14/README.org
Normal file
69
exercicios/14/README.org
Normal 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
|
Loading…
Add table
Reference in a new issue