Ir para o conteúdo
André Aparicio

int argc, char *argv[]

Mensagens Recomendadas

Triton    12
Triton

Está relacionado com a passagem de argumentos ao programa, do género:

programa.exe arg1 arg2

argc - número de argumentos

argv - array com os argumentos

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Hipnoted    6
Hipnoted

Só para complementar:

argv[0] = nome do programa a correr

argv[1] = primeiro argumento

argv[2] = segundo argumento

argv[n] = n argumento

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
André Aparicio    0
André Aparicio

Que fixe, já posso fazer programas com argumentos.  :biggrin:

Mas como é que nunca vi informação sobre isto em tutoriais de C???  :dontgetit:

Já fiz um pequeno programa:

#include <stdio.h>

int main(int argc, char *argv[])
{
    printf("Numero de argumentos = %d\n", argc);
    for(int num = 0; num < argc; num++)
    {
       printf("%d - %s\n",num, argv[num]);
    }
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
andreb    0
andreb

boas

precisava de uma ajudinha sobre isto..

int main(int argc, char *argv[]){
if(argv[1]=="f"){ blablabla } else { printf("%c",argv[1]); }
system("pause");
}

eu executo o programa com o parâmetro f e não funciona, adicionei o printf("%c",argv[1]); para ver se dava e isto diz: [ 

alguem me pode ajudar?

cumps andreb

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Betovsky    2
Betovsky

Primeiro não podes comparar argv[1] == "f"

Tens de usar a função strncmp.

Segundo se queres fazer print tens de por %s já que se trata de uma string não de um char.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
P_E_D_R_O    0
P_E_D_R_O

Já agr... quando e k se utiliza o int argc, char *argv[]? É k estou a fazer um prog em linux e só lá é k necessito de utilizar isto uma vez que trabalho na consola.

No exemplo abaixo não é necessário utilizar o argv e o argc?

Ex:

void main (void)
{
  int a, b;

  printf ("Valor A:\n");
  scanf ("%d", &a);
  printf ("Valor B:\n");
  scanf ("%d", &b);
  printf ("A=%d\nB=%d\n", a, b);
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    311
Rui Carlos

Precisas de usar o argc e argv quando queres saber quais os parâmetros com que o comando foi invocado. Isto tanto se aplica em Linux como noutro SO qualquer, mesmo quando o programa tem interface gráfica.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
P_E_D_R_O    0
P_E_D_R_O

Mas então, não estou a perceber... o argv e o argc substituem por exemplo o scanf? Por exemplo, no Dev quando se executa um programa ele abre uma janela DOS em k a partir de la se introduzem os valores k são pedidos/recebidos pelo scanf ou outra função.

Obg

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    311
Rui Carlos

Os valores que obténs com o argc e argv são os valores que são passados ao mesmo tempo que a aplicação é invocada. O scanf lê valores que introduzes depois da aplicação arrancar. Não é exactamente a mesma coisa...

Normalmente aplicações com interface gráfica não usam scanfs, mas usam o argc e argv.

Partilhar esta mensagem


Link 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