mirror of
https://gitlab.com/blau_araujo/cblc.git
synced 2025-05-09 10:16:35 -03:00
2.8 KiB
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.