Como criar menu com parâmetro em C? [RESOLVIDO]

1. Como criar menu com parâmetro em C? [RESOLVIDO]

Ghoost User
ghoostuser

(usa Arch Linux)

Enviado em 19/12/2015 - 11:14h

Galera, gostaria de saber como criar um menu com parâmetro em C, tipo assim:

$ meu_programa start
$ meu_programa stop


Igual em shell script.

Obrigado


  


2. MELHOR RESPOSTA

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 19/12/2015 - 13:24h

Bom, vou lhe mostrar a porta, mas você terá de atravessar -- Morpheus.


if(!strcmp("start",argv[1])){
printf("Funcionou!\n");
}


A função strcmp compara ponteiros para caractere [ou vetores]. Retorna 0 se são iguais diferente de 0 se forem diferentes.

Espero ter ajudado

[]'s

T+

--

Att,

Thiago Henrique Hüpner

(Mensagem scaneada pelo antivírus........ops! não precisa, afinal eu uso Linux!)


3. Re: Como criar menu com parâmetro em C? [RESOLVIDO]

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 19/12/2015 - 12:39h

Olá amigo!

Pelo que me parece você quer fazer um programa tipo processo, certo? Que tem o start e stop.
Isso será complicado de fazer, pois precisa fazer o programa você precisará buscar o processo, desanexar do terminal(não ficar preso ao terminal que foi executado)

Isso irá requerer conhecimento de sistemas operacionais e processos.

Agora se for um comando que será executado uma vez e quando terminar a execução o programa fechar, será mais simples.

Espero ter ajudado

[]'s

T+

--

Att,

Thiago Henrique Hüpner

(Mensagem scaneada pelo antivírus........ops! não precisa, afinal eu uso Linux!)



4. Re: Como criar menu com parâmetro em C?

Ghoost User
ghoostuser

(usa Arch Linux)

Enviado em 19/12/2015 - 12:52h

Thihup escreveu:

Olá amigo!

Pelo que me parece você quer fazer um programa tipo processo, certo? Que tem o start e stop.
Isso será complicado de fazer, pois precisa fazer o programa você precisará buscar o processo, desanexar do terminal(não ficar preso ao terminal que foi executado)

Isso irá requerer conhecimento de sistemas operacionais e processos.

Agora se for um comando que será executado uma vez e quando terminar a execução o programa fechar, será mais simples.

Espero ter ajudado

[]'s

T+

--

Att,

Thiago Henrique Hüpner

(Mensagem scaneada pelo antivírus........ops! não precisa, afinal eu uso Linux!)


Não amigo, acho que não me expressei bem. eu só dei um exemplo com o start e stop. Não vai rodar processos. É apenas o codigo que vai rodar dependendo da opção do case. Tipo case de shell script, exemplo:

case "$1" in
cod1 )
// codigo 1
;;
cod2)
// codigo 2
;;
*)
echo "use: $0 { cod1 | cod2 }"
;;
esac
exit 0


Entendeu? Um menu com parâmetro, igual de shell script...é isso que eu quero fazer em C.


5. Re: Como criar menu com parâmetro em C?

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 19/12/2015 - 13:03h

Olá amigo, esse é um exemplo adaptado da Wikipédia:


# include <stdio.h>

// Argc possui o tamanho de argumentos passados [o argumento 0 geralmente é o nome do programa], e o
// Argv possui um array de ponteiros para caracteres
int main( int argc, char *argv[] ){
int arg; // declara uma variável inteiro com o nome arg
// atribui-se 1 a arg; enquanto arg for menor que argc, executa-se o bloco e arg é incrementado em cada iteração
for( arg = 1; arg < argc; arg++ )
{
if( argv[arg][0] != '-' )
{
break; // caso não tenha nenhum hífen
}

switch( argv[arg][1] )
{
case 'r': // caso possua um r após o hífen
printf("Argumento -r usado\n\n");
break;
case 'v': // caso possua um v após o hífen
printf("Argumento -v usado\n\n");
break;
default: // este é o valor de escape e sua respectiva mensagem:
printf("Nenhum argumento foi usado\n\n");
break;
}
}


return 0;
}



E dê uma lida aqui: https://www.vivaolinux.com.br/topico/C-C++/ARGC-e-ARGV-%28-Varias-Duvidas-%29

Também pesquise no Google, lá você terá várias respostas.

Espero ter ajudado

[]'s

T+

--

Att,

Thiago Henrique Hüpner

(Mensagem scaneada pelo antivírus........ops! não precisa, afinal eu uso Linux!)



6. Re: Como criar menu com parâmetro em C? [RESOLVIDO]

Ghoost User
ghoostuser

(usa Arch Linux)

Enviado em 19/12/2015 - 13:17h

Thihup escreveu:

Olá amigo, esse é um exemplo adaptado da Wikipédia:


# include <stdio.h>

// Argc possui o tamanho de argumentos passados [o argumento 0 geralmente é o nome do programa], e o
// Argv possui um array de ponteiros para caracteres
int main( int argc, char *argv[] ){
int arg; // declara uma variável inteiro com o nome arg
// atribui-se 1 a arg; enquanto arg for menor que argc, executa-se o bloco e arg é incrementado em cada iteração
for( arg = 1; arg < argc; arg++ )
{
if( argv[arg][0] != '-' )
{
break; // caso não tenha nenhum hífen
}

switch( argv[arg][1] )
{
case 'r': // caso possua um r após o hífen
printf("Argumento -r usado\n\n");
break;
case 'v': // caso possua um v após o hífen
printf("Argumento -v usado\n\n");
break;
default: // este é o valor de escape e sua respectiva mensagem:
printf("Nenhum argumento foi usado\n\n");
break;
}
}


return 0;
}



E dê uma lida aqui: https://www.vivaolinux.com.br/topico/C-C++/ARGC-e-ARGV-%28-Varias-Duvidas-%29

Também pesquise no Google, lá você terá várias respostas.

Espero ter ajudado

[]'s

T+

--

Att,

Thiago Henrique Hüpner

(Mensagem scaneada pelo antivírus........ops! não precisa, afinal eu uso Linux!)


Pois é, eu ja tinha achando um exemplo e lido sobre usar um caracter apenas no case.
Esqueci de avisar, mas tem que ser um string e não apenas caracter, tipo:

$ programa install


Sei que usar apenas caracter é mais pratico, mas vai ter letras repetidas, exemplo: -i (install) -i (iniciar)
Li tambem em outros lugares que não tem como colocar string no case usando C, mas gostaria de uma forma extra para que isso aconteça.

obrigado.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts