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.