Implementar uma Ferramenta de Linha de Comando Simples
Nesta etapa, você criará uma ferramenta prática de linha de comando que demonstra as habilidades que você aprendeu sobre análise e manipulação de argumentos de linha de comando.
Ferramenta de Linha de Comando Calculadora
Você implementará uma calculadora simples de linha de comando que realiza operações aritméticas básicas com base nos argumentos fornecidos pelo usuário.
- Crie um novo arquivo chamado
calc.c no diretório ~/project:
cd ~/project
touch calc.c
- Adicione o seguinte código para criar uma calculadora de linha de comando:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Protótipos de função
double add(double a, double b);
double subtract(double a, double b);
double multiply(double a, double b);
double divide(double a, double b);
int main(int argc, char* argv[]) {
// Verifique o número correto de argumentos
if (argc != 4) {
fprintf(stderr, "Uso: %s <operação> <num1> <num2>\n", argv[0]);
fprintf(stderr, "Operações: add, sub, mul, div\n");
return 1;
}
// Analise a operação
char* operation = argv[1];
// Converta os argumentos em números
double num1 = atof(argv[2]);
double num2 = atof(argv[3]);
// Realize o cálculo com base na operação
double result = 0;
if (strcmp(operation, "add") == 0) {
result = add(num1, num2);
printf("%.2f + %.2f = %.2f\n", num1, num2, result);
} else if (strcmp(operation, "sub") == 0) {
result = subtract(num1, num2);
printf("%.2f - %.2f = %.2f\n", num1, num2, result);
} else if (strcmp(operation, "mul") == 0) {
result = multiply(num1, num2);
printf("%.2f * %.2f = %.2f\n", num1, num2, result);
} else if (strcmp(operation, "div") == 0) {
// Verifique a divisão por zero
if (num2 == 0) {
fprintf(stderr, "Erro: Divisão por zero\n");
return 1;
}
result = divide(num1, num2);
printf("%.2f / %.2f = %.2f\n", num1, num2, result);
} else {
fprintf(stderr, "Erro: Operação inválida\n");
fprintf(stderr, "Operações suportadas: add, sub, mul, div\n");
return 1;
}
return 0;
}
// Funções de operação aritmética
double add(double a, double b) {
return a + b;
}
double subtract(double a, double b) {
return a - b;
}
double multiply(double a, double b) {
return a * b;
}
double divide(double a, double b) {
return a / b;
}
- Compile o programa:
gcc calc.c -o calc
- Execute a calculadora com diferentes operações:
## Adição
./calc add 5 3
## Subtração
./calc sub 10 4
## Multiplicação
./calc mul 6 7
## Divisão
./calc div 15 3
## Casos de erro
./calc div 10 0
./calc pow 5 2
Exemplo de saída:
## Adição
5.00 + 3.00 = 8.00
## Subtração
10.00 - 4.00 = 6.00
## Multiplicação
6.00 * 7.00 = 42.00
## Divisão
15.00 / 3.00 = 5.00
## Divisão por zero
Erro: Divisão por zero
## Operação inválida
Erro: Operação inválida
Operações suportadas: add, sub, mul, div
Conceitos Chave
- Combine a análise de argumentos com a lógica funcional
- Lide com diferentes cenários de operação
- Forneça mensagens de erro claras
- Use funções separadas para diferentes operações
- Valide a entrada e lide com casos extremos