How do I print to my static list?
#include <stdio.h>
#include <stdlib.h>
#define MAX 3
struct alunos {
int matricula;
char nome[30];
float nota1, nota2;
};
typedef struct lista {
int quant;
struct alunos dados[MAX];
} Lista;
Lista* cria_Lista() {
Lista* l;
l = (Lista*) malloc(sizeof(struct lista));
if(l != NULL)
l->quant = 0;
return l;
}
void libera_Lista(Lista* l) {
free(l);
}
int insere_final(Lista* l, struct alunos al) {
if(l == NULL || lista_Cheia(l))
return 0;
l->dados[l->quant] = al;
l->quant++;
return 1;
}
int insere_inicio(Lista *l, struct alunos al) {
if(l == NULL || lista_Cheia(l))
return 0;
int i;
for(i= l->quant - 1; i>=0; i--) {
l->dados[i + 1] = l->dados[i]; //proxima posicao e igual a atual
l->dados[0] = al; //pega a primeira posicao
l->quant++; //incrementa quantidade
return 1;
}
}
void imprime_lista(Lista* l) {
if(l == NULL)
return; // nao retorna nada
int i; //variavel auxiliar
for(i=0; i < l->quant; i++)
printf("Matricula: %d\n", l->dados[i].matricula);
printf("Nome: %s\n", l->dados[i].nome);
printf("Notas: %f %f\n", l->dados[i].nota1, l->dados[i].nota2);
}
int main()
{
struct alunos al[2] = {{3, "João", 8.45, 9.98},
{1, "Maria", 6.75, 8.54}};
Lista *l;
l = cria_Lista();
int i;
for(i=0; i<2; i++) {
insere_inicio(l, al[0]);
imprime_lista(l);
}
libera_Lista(l);
return 0;
}
You are printing empty values, I believe that the statement should be wrong after main
.