Bom vou postar o código todo, mas ao que parece ta tudo funcionando, só quando vou imprimir o nome e a matricula de todos ele só imprime “lixo”…
alguem sabe o que pode ser?
[code]#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct lista
{
char nome[81];
char matricula[8];
char turma[20];
float p1;
float p2;
float p3;
struct lista* prox; //Definindo Lista
};
typedef struct lista Lista;
Lista* preenche(Lista* l,char nome[81], char matricula[8], char turma[20], float p1, float p2, float p3);
Lista* inicializa(); //protótipos
int imprime(Lista* l);
Lista* remove(Lista* l, char apagar[8]);
Lista* inicializa()
{
return(NULL); //Função que inicializa a lista
}
Lista* preenche(Lista* l,char nome[81], char matricula[8], char turma[20], float p1, float p2, float p3)
{
Lista* novo=(Lista*) malloc(sizeof(Lista)); //Função que Preenche a lista
novo->nome[81]=nome[81];
novo->matricula[8]=matricula[8];
novo->turma[20]=turma[20];
novo->p1=p1;
novo->p2=p2;
novo->p3=p3;
novo->prox=l;
return novo;
}
int imprime(Lista* l)
{
Lista* p;
printf("**********************************\n");
for(p=l;p!=NULL;p=p->prox) //Função que imprime os itens da lista
{
printf("**\tmatricula = %s\t\t**\n", p->matricula);
printf("**\tnome = %s\t\t**\n", p->nome);
printf("**\taponta para = %p\t**\n", p->prox);
}
printf("**********************************\n");
}
Lista* remove(Lista* l, char apagar[8])
{
Lista* ant=NULL;
Lista* p=l;
while(p!=NULL&&strcmp(apagar,p->matricula))
{
ant=p;
p=p->prox;
}
if(p==NULL)
{
printf("\nNumero nao encontrado na lista"); //Função de Remoção
return l;
}
if(ant==NULL)
{
l=p->prox;
}
else
{
ant->prox=p->prox;
}
free§;
return l;
}
int main()
{
Lista *l;
int opcao=0;
char apagar[8];
char nome[81];
char matricula[8];
char turma[20];
float p1;
float p2;
float p3;
while(opcao!=5){
printf("\n1---Inicializar");
printf("\n2---Preenchimento"); //Método Main
printf("\n3---Remocao");
printf("\n4---Imprime os numeros da lista");
printf("\n5---Fim\n\n");
scanf("%d",&opcao);
switch(opcao)
{
case 1: {l=inicializa();
break;}
case 2: {fflush(stdin);
printf("\nDigite o nome do aluno a ser cadastrado: \n");
scanf("%s",&nome);
printf("\nDigite o numero da matricula: \n");
scanf("%s",&matricula);
printf("\nDigite a turma: \n");
scanf("%s",&turma);
printf("\nDigite a 1ª nota do aluno: \n");
scanf("%f",&p1);
printf("\nDigite a 2ª nota do aluno: \n");
scanf("%f",&p2);
printf("\nDigite a 3ª nota do aluno: \n");
scanf("%f",&p3);
l=preenche(l,nome,matricula,turma,p1,p2,p3);
break;}
case 3: {printf("\nDigite o numero da matricula para excluir o aluno da lista\n");
scanf("%s",&apagar);
remove(l,apagar);
break;}
case 4: {imprime(l);
break;}
case 5: {printf("\nSaindo...");
break;}
default:{printf("\nOpcao invalida\n");}
}
}
getch();
return(0);
}
[/code]