mirror of
https://gitlab.com/blau_araujo/cblc.git
synced 2025-05-09 18:16:37 -03:00
49 lines
1.9 KiB
Org Mode
49 lines
1.9 KiB
Org Mode
#+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=.
|
|
|