mirror of
https://gitlab.com/blau_araujo/cblc.git
synced 2025-05-10 10:36:37 -03:00
Compare commits
2 commits
3ee62b50a2
...
fd25b0d1f0
Author | SHA1 | Date | |
---|---|---|---|
fd25b0d1f0 | |||
dd6d30fd25 |
2 changed files with 51 additions and 2 deletions
|
@ -33,8 +33,8 @@ qualquer distribuição.
|
||||||
- [[./aulas/09-args/README.org][Aula 9: Argumentos e ambiente]] ([[https://youtu.be/uufnW60rg2Q][vídeo]]) ([[./exercicios/09/README.org][exercícios]])
|
- [[./aulas/09-args/README.org][Aula 9: Argumentos e ambiente]] ([[https://youtu.be/uufnW60rg2Q][vídeo]]) ([[./exercicios/09/README.org][exercícios]])
|
||||||
- [[./aulas/10-dataio][Aula 10: Entrada e saída de dados]] ([[https://youtu.be/b6cbnZlY328][vídeo]]) (sem exercícios)
|
- [[./aulas/10-dataio][Aula 10: Entrada e saída de dados]] ([[https://youtu.be/b6cbnZlY328][vídeo]]) (sem exercícios)
|
||||||
- [[./aulas/11-scanf][Aula 11: Leitura da entrada padrão com a função 'scanf']] ([[https://youtu.be/MZiI95b2gdY][vídeo]]) ([[./exercicios/11/README.org][exercícios]])
|
- [[./aulas/11-scanf][Aula 11: Leitura da entrada padrão com a função 'scanf']] ([[https://youtu.be/MZiI95b2gdY][vídeo]]) ([[./exercicios/11/README.org][exercícios]])
|
||||||
- [[./aulas/#][Aula 12: Leitura da entrada padrão com a função 'fgets']] ([[https://youtu.be/ZZr9HBPo0Oc][vídeo]]) ([[./exercicios/12/README.org][exercícios]])
|
- [[./aulas/12-fgets][Aula 12: Leitura da entrada padrão com a função 'fgets']] ([[https://youtu.be/ZZr9HBPo0Oc][vídeo]]) ([[./exercicios/12/README.org][exercícios]])
|
||||||
- [[./aulas/#][Aula 13: Leitura da entrada padrão com chamadas de sistema]] ([[https://youtu.be/bW3Xox6LP_U][vídeo]]) ([[./exercicios/13/README.org][exercícios]])
|
- [[./aulas/13-read][Aula 13: Leitura da entrada padrão com chamadas de sistema]] ([[https://youtu.be/bW3Xox6LP_U][vídeo]]) ([[./exercicios/13/README.org][exercícios]])
|
||||||
- [[./aulas/#][Aula 14: Abertura de arquivos para leitura]] ([[https://youtu.be/uh3UdYyzXRM][vídeo]]) ([[./exercicios/14/README.org][exercícios]])
|
- [[./aulas/#][Aula 14: Abertura de arquivos para leitura]] ([[https://youtu.be/uh3UdYyzXRM][vídeo]]) ([[./exercicios/14/README.org][exercícios]])
|
||||||
- [[./aulas/#][Aula 15: Abertura de arquivos para escrita]] ([[https://youtu.be/vL8vy3krcKc][vídeo]]) ([[./exercicios/15/README.org][exercícios]])
|
- [[./aulas/#][Aula 15: Abertura de arquivos para escrita]] ([[https://youtu.be/vL8vy3krcKc][vídeo]]) ([[./exercicios/15/README.org][exercícios]])
|
||||||
- [[./aulas/#][Aula 16: Abertura de arquivos para leitura e escrita]] ([[https://youtu.be/B42KIZfivsg][vídeo]]) ([[./exercicios/16/README.org][exercícios]])
|
- [[./aulas/#][Aula 16: Abertura de arquivos para leitura e escrita]] ([[https://youtu.be/B42KIZfivsg][vídeo]]) ([[./exercicios/16/README.org][exercícios]])
|
||||||
|
|
49
exercicios/13/README.org
Normal file
49
exercicios/13/README.org
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
#+title: Curso Básico da Linguagem C
|
||||||
|
#+subtitle: Exercícios
|
||||||
|
#+author: Blau Araujo
|
||||||
|
#+startup: show2levels
|
||||||
|
#+options: toc:3
|
||||||
|
|
||||||
|
* Exercícios da aula 13: Leitura da entrada padrão com 'read'
|
||||||
|
|
||||||
|
- [[../../aulas/13-read/README.org][Anotações da aula]]
|
||||||
|
- [[https://youtu.be/bW3Xox6LP_U][Vídeo]]
|
||||||
|
|
||||||
|
** 1. Desafio: Função 'readline'
|
||||||
|
|
||||||
|
Crie uma função que leia uma única linha digitada no terminal e receba
|
||||||
|
como único argumento uma string que servirá como prompt.
|
||||||
|
|
||||||
|
Características da função:
|
||||||
|
|
||||||
|
- Leitura deve ser implementada com a chamada de sistema =read=.
|
||||||
|
- A função implementa um buffer /estático/ de tamanho =BUFSIZ= (=stdio.h=) para
|
||||||
|
receber a digitação.
|
||||||
|
- A leitura continua até uma quebra de linha ou até =BUFSIZ=.
|
||||||
|
- Consome todos os caracteres digitados, inclusive a quebra de linha.
|
||||||
|
- Em caso de sucesso, retornará o endereço do buffer estático.
|
||||||
|
- Testa se está sendo utilizada com pipes e redirecionamentos e termina com
|
||||||
|
erro, se este for o caso.
|
||||||
|
- Toda e qualquer situação de erro deve causar retorno =NULL=.
|
||||||
|
- O prompt é impresso sem quebra de linha.
|
||||||
|
- Os bytes lidos devem ser convertidos em uma string (terminadas com ='\0'=).
|
||||||
|
- A quebra de linha deve ser removida da string.
|
||||||
|
|
||||||
|
Protótipo da função:
|
||||||
|
|
||||||
|
#+begin_src c
|
||||||
|
char *readline(const char *prompt);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Desafio: Funções auxiliares
|
||||||
|
|
||||||
|
Utilizando a chamada de sistema =read=, implemente as funções abaixo:
|
||||||
|
|
||||||
|
- =int str_size(const char *str)=: Retorna a quantidade de bytes da string =str=.
|
||||||
|
- =void trim_str(const char *str)=: Remove espaços em branco e quebras de linha
|
||||||
|
nas extremidades da string =str=.
|
||||||
|
- =char **str_split(const char *str, cont char *delim)=: Transforma uma string em
|
||||||
|
um vetor de strings separadas na ocorrência do delimitador =delim=.
|
||||||
|
- =char *str_join(const char *str, const char *glue)=: Transforma um vetor de strings
|
||||||
|
em uma string única com os elementos do vetor unidos por =glue=.
|
||||||
|
|
Loading…
Add table
Reference in a new issue