Ir para conteúdo
Fórum Script Brasil
  • 0

Parâmetros via cmd


†h!@gø

Pergunta

Olá, eu quero fazer que o meu programa, quando cahamado no cmd com o parametro -r chame a função de outro módulo mas que esta no mesmo projeto, não tenho a menor noção de como fazer isso alguém pode me ajudar?

esse é meu código

#include <stdio.h>
#include <string.h>

               // Código dentro do MAIN

main()
{
    
    system ("title Contador de arquivo");
    FILE *atps;
    int i, linha, linha_sim, linha_mult, linha_branc;
    linha = linha_sim = linha_mult = linha_branc = 0;
    float percent;
    char ch, arquiv[40],pr[2];
    printf("Digite o nome do arquivo: ");
    gets(arquiv);
    strcat(arquiv, ".txt");
 //  if (strcomp(pr,"-r")){}
                         
    if ((atps = fopen(arquiv,"r")) != NULL)   //se o arquivo não for nulo, fara as condicoes abaixo
    {
        do
        {
            do
            {
                ch = getc(atps);
            }while(ch == ' ');    //retira os espaços no inicio da linha

            if(ch == '\n')      //verifica se é o fim da linha
            {
                linha++;
                ch = getc(atps);
                if(ch == '\n')    //se a proxima linha for \n conta linhas em branco
                {
                    linha++;
                    linha_branc++;
                }
            }
            if(ch == '/')            //primeira letra da linha
            {
                ch = getc(atps);
                if(ch == '/')             //segunda letra da linha
                    linha_sim++;        //conta comentarios simples

                else if(ch == '*')    //segunda letra da linha
                {
                    linha_mult++;
                    ch = getc(atps);       //elimina se a proxima letra for *
                    do
                    {
                        ch = getc(atps);        //elimina a segunda letra, cajo seja o asterisco

                        if(ch == '\n')
                        {
                            linha++;
                            linha_mult++;
                        }
                    }while(ch!= '/');    //terceira letra, repete se encontrar a letra

                }
            }
        }while(ch != EOF);   //repete enquanto não for o fim do arquivo

    fclose(atps);
    printf("\n");
    printf("\xc9");
    for (i=0;i<52;i++)
        printf("\xcd");
    printf("\xbb");
    printf("\n\xba Relat\xa2rio                          Percentual      \xba");
    printf("\n\xba                                                    \xba");
    printf("\n\xba Total de Linhas: %5d                             \xba",linha);
    percent = ((float) linha_sim / linha) * 100;  //fara o percentual do total de linhas
    printf("\n\xba Coment\xa0rios Simples: %5d      (%3.0f%% do C\xa2\digo)   \xba",linha_sim, percent);
    percent = ((float) linha_mult / linha) * 100;
    printf("\n\xba Coment\xa0rios M\xa3ltiplos: %5d    (%3.0f%% do C\xa2\digo)   \xba",linha_mult, percent);
    percent = ((float) linha_branc / linha) * 100;
    printf("\n\xba Linhas em Branco: %5d         (%3.0f%% do C\xa2\digo)   \xba\n",linha_branc, percent);
    printf("\xc8");
    for (i=0;i<52;i++)
        printf("\xcd");
    printf("\xbc");
    printf("\n\n");

    }   //fim do primeiro if

    else
        printf("\nN\xc6o foi poss\xa1vel abrir o arquivo\n\n");
 getch();
}
e essa a função que esta em outro módulo que eu quero que ele chame
int mostrarTelaPrincipal()
{
  int operacao;
  system("cls");
  printf("+------------------------------------------------------------------------+\n");
  printf("+                      Modulo de Registro de Livros                      +\n");
  printf("+  1 = Inserir / 2 = Consultar / 3 = Alterar / 4 = Excluir ou Restaurar  +\n");
  printf("+  5 = Listar / 6 = Exportar para arquivo / 0 = Sair                     +\n");
  printf("+------------------------------------------------------------------------+\n");
  printf("\nInforme a operacao desejada: ");
  scanf("%d", &operacao);  
  fflush(stdin);
   
  return operacao;
}

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

amigo, você já estudou sobre instrução de linha de comando?

pois bem.

Primeiramente inclua em sua main 2 parâmetros do jeito que está aqui:

int main(int argc,char **argv)
O que acontece: Suponha que você chamará o seu programa no cmd dessa forma:
programa -r

O "-r" estará como string em argv[1].

Se quiser que o seu programa comporte-se diferente quando acionar esse parâmetro, é só verificar essa posição.

Explicando melhor as linhas de comando:

O argc contém o número de parâmetros que você enviou +1 (digo +1 porque se não houver nenhum parametro, o valor de argc será 1). Assim, se quiser verificar a quantidade de parâmetros enviados, verifique essa variável.

Já o argv é uma matriz de caraceres (podendo ser o seu parâmetro *argv[]), onde cada linha dessa matriz terá cada parâmetro enviado pelo cmd. A posição argv[0] contém escrito o local onde o executável se encontra.

Ex.: Se ele se localiza em C:\Downloads, o argv[0] terá como valor "C:\Downloads".

cada parâmetro separado por espaço ocupará uma posição do argv diferente:

Ex.:

meuprograma parametro1 parametro2 parametro3

o valor de argv[0] será o diretório do programa como expliquei;

o valor de argv[1] será "parametro1";

o valor de argv[2] será "parametro2";

o valor de argv[3] será "parametro3";

Espero ter ajudado!

Editado por bruce845
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...