Ir ao conteúdo

Como fazer isso? (Array em argumentos)


cout

Posts recomendados

Postado

Bom pessoas, aqui venho humildemente para perguntar a vocês como passar uma array completa como argumento para uma função? já tentei de algumas formas(ponteiros, [], *, etc), daqui do fórum também, porém, não obtive sucesso.

O meu código:

#include <stdio.h>


char writeline(char *argv) {
printf ("argv[0] = %s\n", argv[0]); // erro aqui .-
}

int main(){
char *argv[10] = {"teste", "olá", "sinistro", "nada"};
printf ("argv[0] = %s\n", argv[0]);
writeline(*argv);
}

O que eu queria especificamente era acessar a array e seus argumentos de outra função além da 'main' como está aí em cima.

e aí tem como? :unsure:

Postado
Bom pessoas, aqui venho humildemente para perguntar a vocês como passar uma array completa como argumento para uma função? já tentei de algumas formas(ponteiros, [], *, etc), daqui do fórum também, porém, não obtive sucesso.

O meu código:

#include <stdio.h>


char writeline(char *argv) {
printf ("argv[0] = %s\n", argv[0]); // erro aqui .-
}

int main(){
char *argv[10] = {"teste", "olá", "sinistro", "nada"};
printf ("argv[0] = %s\n", argv[0]);
writeline(*argv);
}

O que eu queria especificamente era acessar a array e seus argumentos de outra função além da 'main' como está aí em cima.

e aí tem como? :unsure:

void writeline(char argv[]) 
{
printf ("argv[0] = %s\n", argv);
}

int main()
{
char argv[10][10]= {"teste", "olá", "sinistro", "nada"};
printf ("argv[0] = %s\n", argv[0]);
writeline(argv[0]);
return 0;
}

como é 1 vector(nao deve importar se é com 3 ou mais dimensoes), o cabeçalho da funçao é:

void writeline(char argv[])

e para usares tens the usar o primeiro elemento:

writeline(argv[0]);

desculpa se a minha resposta é limitada mas vê o que corrigi;)

espero ter-te ajudado

Postado

Você pode fazer assim:


void writeline(char *argv[10]) {
printf("argv[0] = %s\n", argv[0]);
}

ou

void writeline(char *argv[]) {
printf("argv[0] = %s\n", argv[0]);
}

ou

void writeline(char **argv) {
printf("argv[0] = %s\n", argv[0]);
}

Na chamada da função, deixe apenas a variável. Retire o "*":


writeline(argv);

Postado

@Cambalinho

O seu código funcionou aqui, mas como você mesmo disse está um pouco "limitado", na verdade eu queria acessar todo o conteúdo da array {arg[0], arg[1], arg[2]}.

@ScreenBlack

Valeu cara o seu caiu como uma luva, eu usei este aqui

#include <stdio.h>


void writeline(char *argv[10]) {
printf("argv[2] = %s\n", argv[2]);
}

int main(){
char *argv[10] = {"teste", "olá", "sinistro", "nada"};
printf("argv[2] = %s\n", argv[2]);
writeline(argv);
}

Na verdade eu ainda tenho que aprender o uso dos ponteiros, estou usando-os na base do "chute", o compilador acusa um erro e vou tentando saídas. Quando acabar o meu projeto publico aqui. (Não sou "preguiçoso" [pessoas que perguntam sem ao menos tentar] apenas falta um tempinho mais abrangente para aprender mesmo)

Resumindo: Obrigado aos dois, é bom pra mim ter aqui pessoas que já dominam ou pelo menos boa parte dessa linguagem tão legal.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...