Ir ao conteúdo
  • Cadastre-se
Rodrigo ADS Lima

Erro ao passar struct como parametro da função

Recommended Posts

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;
}

 

Compartilhar este post


Link para o post
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;
}

 

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×