seja bem vindo ao forum eof, caso nao seja cadastrado se cadastre para poder visualizar todo o conteudo ^^

Participe do fórum, é rápido e fácil

seja bem vindo ao forum eof, caso nao seja cadastrado se cadastre para poder visualizar todo o conteudo ^^
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Você não está conectado. Conecte-se ou registre-se

[tutorial] argumentos argc e argv

Ir para baixo  Mensagem [Página 1 de 1]

1[tutorial] argumentos argc e argv Empty [tutorial] argumentos argc e argv Sáb maio 26, 2012 1:10 am

Kodo no Kami

Kodo no Kami
master
master

bom galera aq é o hacker fts315 com mais um tutorial de c, nesse tutorial eu vou falar sobre como passar argumentos para um programa na verdade como criar um programa com argumentos, nos programas em c q usa o terminal para se executar agente pode criar argumentos, quando agente digita um determinado argumento ele faz uma coisa quando agente digita outro ele faz outra coisa o nao faz, vamos usar como exemplo o ping do windows, se agente digitar só ping ele aparece isso

C:\Documents and Settings\Administrador\Desktop>ping

Uso: ping [-t] [-a] [-n num] [-l tamanho] [-f] [-i TTL] [-v TOS]
[-r num] [-s num] [[-j lista_hosts] | [-k lista_hosts]]
[-w tempo_limite] nome_destino

Opções:
-t Dispara contra o host especificado até ser interrompido.
Para ver estatísticas e continuar, pressione CTRL-Break;
para terminar, pressione CRTL-C.
-a Resolve endereços para nomes de host.
-n num Número de requisições de eco a enviar. O valor padrão é 4.
-l tamanho Envia o tamanho do buffer.
-f Ativa o sinalizador de não-fragmentação no pacote.
-i TTL Define o tempo de vida.
-v TOS Define o tipo de serviço.
-r num Rota dos pacotes para <num> saltos.
-s num Data e hora para <num> saltos.
-j lista_hosts Rota ampliada de origens definida em <lista_hosts>.
-k lista_hosts Rota restrita de origens definida em <lista_hosts>.
-w tempo_limite Tempo limite em milissegundos a aguardar para cada resposta.

C:\Documents and Settings\Administrador\Desktop>

mais se agente digitar ping + o ip ai ele manda pacotes icmp para o ip q agente digito, existe outros argumentos (sintaxes) no ping, esses argumentos q agente vai aprender a criar nos nossos programas, veja um exemplo de programa simples

Código:

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

int main(void)
{
    char nome[15];
    printf("digite um nome: ");
    gets(nome);
    if (!(strcmp(nome,"fts315")))
    {
        printf("esse e um hacker");
    }
    if (!(strcmp(nome,"flavio")))
    {
        printf("esse e um programador");
    }
    return 0;
}

na source acima ela faz o seguinte, pede para vc digitar um nome esse nome e salvo na variavel nome, depois e comparado usando a funçao strcmp (essa funçao compara duas string para ver se sao iguais, caso ela seja igual entao ela retorna o valor 0), como dito antes a funçao strcmp retorna 0 caso for igual (isso em um teste booleano vai retorna falso, entao eu use ! para inverter assim retornando verdadeiro para meu teste), caso o nome seja fts315 entao vai exibir a messagem "esse e um hacker" se o nome for flavio vai exibir "esse e um programador", caso nao seja nenhum dos dois nomes nao exibe nada, no meu programa acima eu poderia criar um argumento ao inves de executar o programa ai ele pede para eu digitar eu poderia digitar antes de executar, se apos compilar esse programa ele se chamasse fts.exe , no prompt de comando eu poderia executar ele assim

C:\Documents and Settings\Administrador\Desktop>fts.exe fts315

ai ele ia exibir a menssagem "esse e um hacker", em alguns casos e mais vantajoso fazer programas assim, para criar esses argumentos vamos ter q adicionar argc e argv dentro do bloco principal (main), o argc e o contador ele e do tipo int, o argv e nosso argumento ele e um ponteiro do tipo char

Código:

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

int main(int argc, char *argv[])
{
  return 0;
}

na maioria das vezes agente usa esse argumento para comparaçao, para chamar o argumento basta usar argv[] dentro de conchetes a posiçao dele, a posiçao começa no numero 1 no numero 0 e o endereço do executavel, veja

Código:

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

int main(int argc, char *argv[])
{
  printf("%s",argv[0]);
  return 0;
}

vamos fazer exibir o primeiro argumento q agente digitar, para isso basta mudar a source anterior para printf("%s",argv[1]); ele vai exibir o primeiro argumento, lembrando q tem q executar pelo terminal (prompt)

C:\Documents and Settings\Administrador\Desktop>fts.exe "by hacker fts315"
by hacker fts315
C:\Documents and Settings\Administrador\Desktop>

so lembrando q eu digitei by hacker fts315 entre aspas pq tem espaço se nao o terminal ia interpretar como 3 argumentos diferente, agora vamos comparar os argumentos e fazer exibir de forma diferente

Código:

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

int main(int argc, char *argv[])
{
  if (!(strcmp(argv[1],"fts315")))
  {
      printf("esse e um hacker");
  }
  else if (!(strcmp(argv[1],"flavio")))
  {
      printf("esse e um programador");
  }
  return 0;
}

para executar basta

C:\Documents and Settings\Administrador\Desktop>fts.exe flavio
esse e um programador
C:\Documents and Settings\Administrador\Desktop>

eu to fazendo exibir uma message mais vc poderia fazer qualquer coisa, para usar mais de um argumento basta ir mudando o numero dentro do argv[], uma dica tambem e exibe todas sintaxe no seu programa com um argumento tipo -h ou se errar um argumento ele exibe, tipo o exemplo abaixo

Código:
#include <stdio.h>
#include <string.h>

int main(int argc, char *argv[])
{
  if (!(strcmp(argv[1],"fts315")))
  {
      printf("esse e um hacker");
  }
  else if (!(strcmp(argv[1],"flavio")))
  {
      printf("esse e um programador");
  }
  else
  {
      printf("nome invalido os nomes sao hacker e flavio");
  }
  return 0;
}
 

by hacker fts315

https://endoffile.umforum.net

Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos