cblc/exercicios/15/README.org

2.8 KiB

Curso Básico da Linguagem C

Exercícios da aula 15: Abertura de arquivos para escrita

1. Programa 'nf' (new file)

No Unix e no GNU, é comum as pessoas associarem a criação de novos arquivos vazios ao utilitário touch, mas isso é só um efeito colateral de seu verdadeiro propósito, que é alterar a data/hora de último acesso ao arquivo. Sendo assim, crie um programa realmente dedicado a criar novos arquivos vazios.

Uso proposto:

nf ARQUIVOS...

Notas:

  • Os caminhos e nomes dos novos arquivos devem ser passados como argumentos.
  • Se nenhum argumento for passado, o programa terminará com erro, imprimindo suas informações de uso.
  • Se algum dos arquivos já existir, o programa não fará nada com ele e apenas exibirá uma mensagem em stderr com o seguinte formato:
Arquivo NOME já existe: nada será feito!
  • Para cada caminho inexistente, o programa deve exibir em stderr:
O diretório DIR não existe: impossível criar ARQUIVO!
  • Se algum arquivo não puder ser criado por falta de privilégios do usuário, a mensagem de erro deve ser:
Impossível criar ARQUIVO: acesso negado!
  • Mesmo que algum arquivo já exista, os demais devem ser criados normalmente.
  • Ao terminar, o programa deve exibir em stdout a quantidade de arquivos criados no seguinte formato:
Arquivos criados: NUM_ARQUIVOS_CRIADOS de NUM_DE_ARQUIVOS_SOLICITADOS

2. Programa 'hd' (here doc)

No shell do Unix e do GNU, é possível criar novos arquivos digitando seus conteúdos com o mecanismo do here doc:

:~$ cat << FIM >> ARQUIVO

Assim, o utilitário cat lê as linhas digitadas, imprime essas linhas e o shell as redireciona para append em ARQUIVO. Portanto, crie um programa que reproduza este comportamento de forma autônoma, ou seja, sem operadores do shell.

Uso proposto:

hd ARQUIVO

Requisitos:

  • Apenas o primeiro argumento será aceito como o caminho e o nome do arquivo que receberá as linhas digitadas no terminal.
  • O programa deve avisar ao usuário se o arquivo já existir, dando a opção de continuar com o seguinte prompt:
O arquivo ARQUIVO já existe, deseja modifícá-lo (s/N)?
  • A opção padrão, aceita com Enter, é N (não).
  • Se o usuário aceitar continuar, as novas linhas devem ser escritas ao final do arquivo.
  • O programa vai parar de receber novas linhas quando o usuário teclar Ctrl+D.
  • Antes de terminar, o programa deve exibir o conteúdo atual do arquivo.