Programação Progressiva
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Programação Progressiva

Fórum para dúvidas dos sites: Programação Progressiva, Java Progressivo, C Progressivo


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

Programação em C, Structs passagem por parâmetro... Erro ao executar o código.

3 participantes

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

MarioLuiz1992



Senhores, estou com um erro em meu programa e não consigo identificar aonde, na execução no cmd o erro persiste... O objetivo do programa é criar uma função para receber os dados e imprimir os dados em outra função usando struct ..

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

typedef struct{
char nome[50],cor[50];
int idade;
float altura,peso;
}PESSOA;

int main(void)
{
int gravapessoa(PESSOA *pess[3]);
int imprimepessoa(PESSOA pe[3]);

   int gravapessoa();
   int imprimepessoa();
   PESSOA pes[3];
   gravapessoa(&pes);
   imprimepessoa(pes);

return 0;
}

int gravapessoa(PESSOA *pess[3])
{
   int i;
   for (i=0;i<3;i++)
   {
   printf("\nDigite o nome da pessoa: ");
   gets(pess[i]->nome);

   printf("\nDigite a cor da pessoa: ");
   gets(pess[i]->cor);

   printf("\nDigite a idade da pessoa: ");
   scanf("%d", &pess[i]->idade);

   printf("\nDigite a altura da pessoa: ");
   scanf("%f", &pess[i]->altura);

   printf("\nDigite o peso da pessoa: ");
   scanf ("%f", &pess[i]->peso);

   
   }
}

int imprimepessoa(PESSOA pe[3])
{
   int i;
   for (i=0;i<3;i++)
   {
       printf("\nO %d§ Cadastro contem os seguintes dados... nome: %s\tcor: %s\tidade: %d\taltura: %f\tpeso: %f ",i,pe[i].nome,pe[i].cor,pe[i].idade,pe[i].altura,pe[i].peso);
   }

}

Admin


Admin

Olá,

Você está declarando os protótipos da função dentro da main, e é do lado de fora (antes dela).
E essas duas funções que você declara tem retorno do tipo 'int', mas dentro da implementação das funções, elas não estão retornando nada.

E quando estamos passamos um vetor para uma função, já estamos passando o endereço desse vetor (o endereço do primeiro elemento), então a passagem já é por referência (vai o endereço real do vetor, e não uma cópia), não sendo necessário passar o endereço do vetor (&).

https://progressiva.forumeiros.com

Mauro Britivaldo

Mauro Britivaldo

int gravapessoa(PESSOA *pess[3]) não é compatível com o tipo que você estar tentando passar. *pes e diferente de *pess[]!
pess[i]->XXX vai resultar em erros.

Conteúdo patrocinado



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

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