mirror of
https://gitlab.com/blau_araujo/cblc.git
synced 2025-05-09 02:06:37 -03:00
1.9 KiB
1.9 KiB
Curso Básico da Linguagem C
Exercícios da aula 13: Leitura da entrada padrão com 'read'
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:
char *readline(const char *prompt);
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 stringstr
.void trim_str(const char *str)
: Remove espaços em branco e quebras de linha nas extremidades da stringstr
.char **str_split(const char *str, cont char *delim)
: Transforma uma string em um vetor de strings separadas na ocorrência do delimitadordelim
.char *str_join(const char *str, const char *glue)
: Transforma um vetor de strings em uma string única com os elementos do vetor unidos porglue
.