Ir para o conteúdo principal
Paca
  • Página inicial
  • Mais
Você acessou como visitante
Acessar
Página inicial
  1. Semestres anteriores
  2. MAC0323 2018
  3. PR02
Tarefa

PR02

Condições de conclusão
Aberto: quinta-feira, 12 abr. 2018, 00:00
Vencimento: quarta-feira, 25 abr. 2018, 23:55

Parte II: Buffer

Nesta segunda parte do projeto você deve implementar o buffer de caracteres, e o programa para testá-lo.

Buffer

O arquivo buffer.h contém a interface do módulo que você deve escrever. Seu trabalho é escrever o arquivo buffer.c que implementa as funções descritas em buffer.h. O arquivo não deve ser alterado. O arquivo buffer.h pode ser baixado daqui.

Programa de teste do buffer

Para testar sua implementação do buffer, você deve escrever um programa chamado center que lê um arquivo de texto e centraliza cada uma de suas linhas. Dado um número inteiro positivo , seu programa deve ler cada linha do arquivo de entrada usando a função read_line() de buffer.h, remover todos os espaços do começo e fim da linha e centralizar o resultado em c colunas.

Para determinar o que é um espaço, você deve usar a função isspace() da biblioteca padrão (procure nas man pages). A chamada isspace(c) devolve não-zero se c é código de um white space ou zero caso contrário. Para usar a função isspace() você deve incluir o header ctype.h:

#include <ctype.h>

Argumentos

Seu programa deve receber na linha de comando os seguintes argumentos: * nome do arquivo de entrada; * nome do arquivo de saída; * número de colunas c.

A saída centralizada deve ser gravada no arquivo de saída. Linhas em branco (i.e., compostas apenas de espaços) seguidas devem ser colapsadas para uma única linha em branco. Linhas que, após a remoção dos white spaces no início e fim, tenham comprimento maior do que c, devem ser gravadas no arquivo de saída sem centralização (mas também sem espaços no início e fim) e uma mensagem de erro contendo o número da linha deve ser mostrada na saída padrão de erros stderr.

Considere por exemplo o arquivo foo.txt:

As armas e
           os baroes assinalados
que da ocidental praia

      lusitana por


      mares nunca dantes navegados
passaram ainda alem
da Taprobana.

A invocação

$ center foo.txt bar.txt 25

gera o arquivo bar.txt com o conteúdo (o | abaixo indica o começo da linha por motivos de clareza; você não deve incluí-lo na saída!):


++++++++As armas e
++os baroes assinalados
++que da ocidental praia

+++++++lusitana por

mares nunca dantes navegados
+++passaram ainda alem
++++++da Taprobana.

Na saída de erro seria impressa, por exemplo, a mensagem:

center: foo.txt: line 8: line too long.
Você acessou como visitante (Acessar)
Resumo de retenção de dados
Baixar o aplicativo móvel.
Fornecido por Moodle