Ir ao conteúdo
  • Cadastre-se

Erro ao passar struct como parametro da função


Posts recomendados

Pessoal eu fiz o codigo abaixo passando vetor do tipo inteiro como parametro, funcionou normalmente , porém eu reescrevi o codigo usando como parametro o tipo struct porém esta dando o erro "array type has incomplete element type", acredito que eu estou declarando o prototipo da função corretamente, sendo assim não entendo porque esta dando erro, alguem pode me ajudar a entender onde estou errando? segue abaixo o codigo:

 

/*Crie um programa que possui uma função que recebe como argumento um vetor de tamanho 5 de tipo estrutura sendo que essa estrutura
deve armazenar um determinado horario no formato hhmmss , peça que o usuario digite 5 horarios diversos que deverão ser armazenados
no argumento recebido.Crie uma segunda função que recebera este mesmo vetor estrutura mas desta vez a função devera apenas ler os
valores armazenados no vetor estrutura mostrnado uma resposta apropriada*/

#include<stdio.h>

void armazena(struct horario horaAtual[]);
void mostra(struct horario horaAtual[]);

struct horario{
    int hora;
    int minuto;
    int segundo;
};

int main(){

    struct horario horaAtual[5];

    armazena(horaAtual);
    mostra(horaAtual);

    return 0;

}

void armazena(struct horario horaAtual[]){

    int i;

    for(i = 0 ; i < 5; i++){
        printf("Informe a hora do %do horario:",i+1);
        scanf("%d",&horaAtual[i].hora);
        printf("Informe os minutos do %do horario:",i+1);
        scanf("%d",&horaAtual[i].minuto);
        printf("Informe os segundos do %do horario:",i+1);
        scanf("%d",&horaAtual[i].segundo);
    }

    return;
}

void mostra(struct horario horaAtual[]){

    int i;

    for(i = 0; i < 5; i ++){
        printf("%d:%d:%d",horaAtual[i].hora,horaAtual[i].minuto,horaAtual[i].segundo);
        printf("\n");

    }

    return;
}

 

Link para o comentário
Compartilhar em outros sites

O seu parece estar funcionando normalmente, tenta esse então:

 

#include<stdio.h>

void armazena(struct horario horaAtual[]);
void mostra(struct horario *);

struct horario{
    int hora;
    int minuto;
    int segundo;
};

int main(){

    struct horario horaAtual[5];

    armazena(horaAtual);
    mostra(horaAtual);

    return 0;

}

void armazena(struct horario horaAtual[]){

    int i;

    for(i = 0 ; i < 5; i++){
        printf("Informe a hora do %do horario:",i+1);
        scanf("%d",&horaAtual[i].hora);
        printf("Informe os minutos do %do horario:",i+1);
        scanf("%d",&horaAtual[i].minuto);
        printf("Informe os segundos do %do horario:",i+1);
        scanf("%d",&horaAtual[i].segundo);
    }

    return;
}

void mostra(horario *horaAtual){

    int i;

    for(i = 0; i < 5; i ++){
        printf("%d:%d:%d",horaAtual[i].hora,horaAtual[i].minuto,horaAtual[i].segundo);
        printf("\n");

    }

    return;
}

 

Link para o comentário
Compartilhar em outros sites

@Rodrigo ADS Lima @1freakday Acho que tem haver com o compilador, se salvar o código como .CPP ele roda normalmente, mas se salvar como .C da erro de compilação. O problema é que a função é definida antes da struct, e a mesma função utiliza a struct, ai o compilador não reconhece.

É só declarar a struct primeiro que o erro desaparece.

#include<stdio.h>


struct horario {
  int hora;
  int minuto;
  int segundo;
};

void armazena(struct horario horaAtual[]);
void mostra(struct horario horaAtual[]);


int main() {

  struct horario horaAtual[5];

  armazena(horaAtual);
  mostra(horaAtual);

  return 0;

}

void armazena(struct horario horaAtual[]) {

  int i;

  for(i = 0 ; i < 5; i++) {
    printf("Informe a hora do %do horario:",i+1);
    scanf("%d",&horaAtual[i].hora);
    printf("Informe os minutos do %do horario:",i+1);
    scanf("%d",&horaAtual[i].minuto);
    printf("Informe os segundos do %do horario:",i+1);
    scanf("%d",&horaAtual[i].segundo);
  }

  return;
}

void mostra(struct horario horaAtual[]) {

  int i;

  for(i = 0; i < 5; i ++) {
    printf("%d:%d:%d",horaAtual[i].hora,horaAtual[i].minuto,horaAtual[i].segundo);
    printf("\n");

  }

  return;
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...