Passagem de valores entre duas funções [RESOLVIDO]

1. Passagem de valores entre duas funções [RESOLVIDO]

Jóvio
Jovioluiz

(usa Ubuntu)

Enviado em 30/01/2018 - 17:56h

Boa tarde pessoal,
Não estou conseguindo passar o valor da variável cont_p da função preenche_pessoas para a função exibe_pessoas para fazer o laço for. Alguma dica de como posso fazer isso.
Obrigado.

void preenche_pessoa(Pessoas *pessoas){
int cont_p=0;
getchar();
printf("Digite o nome do proprietário: ");
fgets(pessoas[cont_p]->nome_prop, 50, stdin);
printf("Digite o nome do beneficiário: ");
fgets(pessoas[cont_p]->benef, 50, stdin);
cont_p++;
}
void exibe_pessoa(Pessoas pessoas){
for(int i=0; i<cont_p; i++){
printf("Nome proprietário: %s", pessoas[i].nome_prop);
printf("Nome beneficiário: %s", pessoas[i].benef);
printf("\n");
}
}



  


2. MELHOR RESPOSTA

Samuel Leonardo
SamL

(usa XUbuntu)

Enviado em 30/01/2018 - 18:28h

cont_p ali é uma variável local da função preenche_pessoa(), tente fazer o seguinte: remover cont_p da função e deixe ele no main mais ou menos como no código abaixo:

//no main
Pessoas pessoas[69];
int cont_p = 0;
do
{
preenche_pessoa(pessoas);
cont_p++;
} whille (cont_p for menor que o vetor pessoas E o usuário não desejar sair);

cont_p deve ir até 69, ou enquanto for menor que 69 (cont_p < 69) pode ir adicionando pessoas se for necessário. Ainda tem que perguntar o usuário se ele deseja adicionar alguma pessoa, pous pode ser que precise de apenas 5 pessoas cadastradas, ou mesmo 20, mas só irá até no máximo a 69 no meu exemplo.

Depois você modifica a função exibe_pessoa() para ficar assim: exibe_pessoa(Pessoa * pessoas, int cont_p), que agora pega o valor real do cont_p é passado pra função. Chame a função exibe_pessoa()depois do "do{}while" se for necessário.

3. RE: PASSAGEM DE VALORES ENTRE DUAS FUNÇÕES

Jóvio
Jovioluiz

(usa Ubuntu)

Enviado em 31/01/2018 - 12:18h

Valeu pela ajuda, mas na hora de imprimir a função exibe_pessoa não está imprimindo ou esta imprimindo somente um dos valores cadastrados.

Assim esta a função exibe
void exibe_pessoa(Pessoas *pessoas, int cont_p){
for(int i=0; i<cont_p; i++){
printf("Nome proprietário: %s", pessoas[i]->nome_prop);
printf("Nome beneficiário: %s", pessoas[i]->benef);
printf("\n");
}
}


E assim esta a função no main
exibe_pessoa(&pessoas[cont_p], cont_p); 








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts