Ir para o conteúdo
PsySc0rpi0n

Verificação e uso dos argumentos argc e argv

Mensagens Recomendadas

PsySc0rpi0n

Boas.

O IRC está down e faz muita falta!

É o seguinte:

Estou a fazer um pequeno programa, que entre outras coisas, está a servir para eu treinar um pouco as strings, o C em si, a estruturar o código em files ".c" e ".h", entre ouitras cosas!

Então, neste momento estou a tentar fazer/invertar um uso para os argumentos da função main "argc" e "argv"... O objectivo é fazer algo semelhante (semelhante é ser optimista, mas pronto) ao que é costume ver em aplicações linux, ou seja, entramos com o nome do programa e regra geral, esse programa pode aceitar 1 ou mais argumentos passados na própria linha de comandos, para além do próprio nome do programa que por si só já conta como um argumento.

Concretizando para o caso que eu estou a tentar fazer, é suposto podermos iniciar o programa usando ou não um destes parâmetros:

./string -dbm

./string --debug-mode

./string -h

./string --help

As primeira e segunda hipóteses devem sortir o mesmo efeito, são quivalentes, tal como nos 3º e 4º casos!

O code que eu tenho para verificar os parâmetros é:

if (!strcmp (argv [1], "-dbm") || !strcmp (argv [1], "--debug-mode"))
 dbm = 1;
else
 dbm = 0;

if (!strcmp (argv [1], "-h") || !strcmp (argv [1], "--help"))
 help_menu ();

Estas linhas estão logo no início da função main a seguir à declaração de algumas variáveis...

Acontece que se eu usar um dos parâmetros acima o programa funciona bem, mas se não usar parâmetro nenhum, ele termina logo com um segmentation fault!


Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

isso é porque não estás a confirmar se o valor argv[1] realmente existe

deverias ter algo como:

if (argc >= 2)
{
 // o teu código
}


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.