cblc/exercicios/13
2025-05-01 12:59:23 -03:00
..
README.org exercícios da aula 13 2025-05-01 12:59:23 -03:00

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 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.