Acesso ao Parâmetro argv
Compreendendo a Estrutura do Vetor argv
Em C, argv é um vetor de ponteiros para caracteres (strings) que representam os argumentos da linha de comando. Cada elemento é uma string terminada em nulo.
graph LR
A[argv[0]] --> B[Nome do Programa]
A --> C[Primeiro Argumento Real]
D[argv[1]] --> C
E[argv[2]] --> F[Segundo Argumento Real]
Técnicas Básicas de Acesso a Argumentos
Acesso Direto por Índice
#include <stdio.h>
int main(int argc, char *argv[]) {
// Acessando o primeiro argumento
if (argc > 1) {
printf("Primeiro argumento: %s\n", argv[1]);
}
// Acessando argumentos específicos
if (argc > 2) {
printf("Segundo argumento: %s\n", argv[2]);
}
return 0;
}
Processamento Iterativo de Argumentos
#include <stdio.h>
int main(int argc, char *argv[]) {
for (int i = 1; i < argc; i++) {
printf("Argumento %d: %s\n", i, argv[i]);
}
return 0;
}
Conversão de Tipo de Argumentos
| Método de Conversão |
Descrição |
Exemplo |
atoi() |
Converter string para inteiro |
int valor = atoi(argv[1]); |
atof() |
Converter string para float |
float num = atof(argv[1]); |
strtol() |
Converter string para inteiro longo |
long val = strtol(argv[1], NULL, 10); |
Análise Avançada de Argumentos
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
// Verificar argumentos mínimos requeridos
if (argc < 3) {
fprintf(stderr, "Uso: %s <param1> <param2>\n", argv[0]);
exit(1);
}
// Conversão segura para inteiro
int x = atoi(argv[1]);
int y = atoi(argv[2]);
printf("Argumentos processados: %d, %d\n", x, y);
return 0;
}
Considerações de Segurança
- Sempre verifique
argc antes de acessar argv
- Utilize verificação de limites
- Valide os tipos de argumentos
- Lidar com possíveis erros de conversão
Armadilhas Comuns
graph TD
A[Acesso ao Argumento] --> B{Argumentos Suficientes?}
B -->|Não| C[Possível Erro de Segmentação]
B -->|Sim| D[Processamento Seguro]
C --> E[Falha do Programa]
Dominando essas técnicas no ambiente de programação LabEx, os desenvolvedores podem lidar robustamente com argumentos da linha de comando em programas C.