mirror of
https://gitlab.com/blau_araujo/cblc.git
synced 2025-06-23 20:16:36 -03:00
Inicio do exercicio da Aula 15 #26
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Objetivo: Criar um programa que recebe 1 ou 2 argumentos. Sendo um dos argumentos uma opção e o outro o nome de um arquivo.
Opções:
-o = escrever do zero (w)
-a = abrir com modo (a)
padrão vale o w, existente.
Esboço do programa criado em sala:
Minha solução...
Não mudei quase nada da ideia de vocês na aula, só apliquei as minhas sugestões:
Compilação e testes:
O ponto principal que eu observo é a falta de método. Veja, eu só começo a escrever quando tenho um esboço decidido, mesmo que tenha que mudar ao longo da implementação, por exemplo...
Função
parse_arg
:enum Option
);switch-case
e comparado com as constantes daenum
.-a
,-q
ou-h
;'-'
é erro;Implementação:
Ações dependentes da quantidade de argumentos...
Se
argc
for igual a 1 ou maior que 3: termina com erro.Se
argc
for igual a 2, o argumento só pode ser-h
ou o nome do arquivo.parse_arg
eswitch
:-h
, imprime ajuda e sai com sucesso;-
, sai com erro;char *file
echar *mode
("w"
).Implementação:
argc
for igual a 3, testar cada opção (em loop).switch
comparando com o retorno deparse_arg
.char *file
se ainda não definido (file = NULL
);-o
, define o modo como"w"
, se ainda não definido (mode = NULL
);-a
, define o modo como"a"
, se ainda não definido (mode = NULL
);-h
, imprime ajuda e termina com sucesso;NULL
, termina com erro.Implementação:
Melhorias interessantes
"Tecle Ctrl+D para terminar...\n"
;"> "
no início de cada linha;":q"
.Resolvi o exercício mas não segui todos os requisitos.
Saídas:
Acabei refazendo tbm e decidi usar uma abordagem diferente: