Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

HIT_Braga

ARGC e ARGV

Mensagens Recomendadas

HIT_Braga

Olá pessoal

Estou a tentar fazer uma coisa (axo que simples). Quero saber o numero de argumentos que foram introduzidos.

Sei que o argc devolve esse número e funciona bem quando faço comando do tipo "./teste 1 2 3" retorna 4 argumentos. O meu problema é que eu quero que ele faça isso usando o readline.h

#include<stdio.h>
#include <readline/readline.h>
#include <readline/history.h>
int main(int argc,char argv[])
{
char *s;
s = readline("Letras>");
printf("number of args%d\n",argc);
}

Assim da forma que está retorna sempre um argumento, pois para evocar o programa faço "./teste" e depois a prompt muda para "Letras".

Sds,

HIT 😲


" Elogios não me elevam, ofensas não me rebaixam, sou o que sou e não o que acham! "

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HIT_Braga

Eu sei disso LocalHost.

Mas eu quero que depois de invocar ./letras ; leia os argumentos que vão ser introduzidos.

Sei que quando faço ./letras 1 retorna dois args.


" Elogios não me elevam, ofensas não me rebaixam, sou o que sou e não o que acham! "

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PJM

Boas HIT_Braga.

Não percebi bem o teu objectivo, mas se for ler os valores que introduziste nos argumentos será algo:

#include <stdio.h>
#include <stdlib.h>

int main(int argc,char **argv)
{
int i;
printf("number of args: %d \n", argc);

for (i=1;i < argc; i++)
	printf("Content of argv %d: %d\n", i, atoi(argv[i]));

return 0;
}

quanto ao readline não percebi bem o objectivo disso...

espero ter ajudado.

Cumprimentos, 

      PJM

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HIT_Braga

Experimentem o código em cima que eu coloquei.

Acho que ainda não devem ter usado a biblioteca readline.h


" Elogios não me elevam, ofensas não me rebaixam, sou o que sou e não o que acham! "

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
marco_iku

porque essa biblioteca não existe, pelo menos não tenho no meu SO...

existe, é usada em quase todos os programas com CLI

#include<stdio.h>
#include <readline/readline.h>
#include <readline/history.h>

int main(int argc,char argv[])
{
char *s;
s = readline("Letras>");
printf("number of args%d\n",argc);
}

Se percebi o que tu querias...

se queres saber quantos argumentos foram introduzidos, dou-te uma pista: o scanf (e irmãos, ex: sscanf) devolve o nr de variáveis que atribuiu

exemplo:

int nrArg=0;
char *linha;
char *arg1;
char *arg2;
char *arg3;
char *arg4;
//...
// tens um numero limitado de argumentos certo?

linha = readline ("Letras> ");
nrArg = sscanf(linha,"%s %s %s %s", arg1, arg2, arg3, arg4);

printf("%d", nrArg); // se arg4 for = "", então nrArgs=4

Partilhar esta mensagem


Ligação 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. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.