Yaslini 0 Denunciar post Postado Junho 23, 2009 Bom pessoal , quebrei a cabeça e depois de muita luta consegui fazer alguma coisa, mas meu programa ainda ta dando erro, tipo não ta gravando o nome e ta misturando os resultados..Se alguem puder corrigir pramim eu ficarei agradecida por demais, pois tenho que entregar terça feira dia 23/06/09 é um trabalho da faculdade.. Esse é o enunciado.. 2-O cadastro de alunos de uma escola contém os seguintes dados: - nome (até 50 caracteres) - data de nascimento: dia, mês e ano - sexo (1 caracter) - turma (3 caracteres) Escreva um programa em C que leia dados de alunos (não aceitando dados de um aluno já cadastrado) e insira os correspondentes registros na próxima posição vaga de um vetor de 100 posições. O programa deve perguntar se o usuário deseja inserir mais nomes ou não. E isso é o que fiz #include<stdio.h> #include<stdlib.h> #include<conio.h> #include<string.h> void inserir(void); void mostrar(void); int i; struct registro { char turma[3]; char nome[30]; char sexo[1]; char data[12]; }; struct registro vetor[100]; int num; int main(void) { for(;;) { printf("\t\t\t\tCADASTRO DE ALUNOS\n"); printf("1-Para adicionar dados\n"); printf("2-Para mostrar dados\n"); printf("0- Sair\n"); scanf("%d",&num); switch(num) { case 1: inserir(); break; case 2: mostrar(); break; case 0: exit(0); default: puts("TENTE NOVAMENTE"); } } getchar(); } void inserir (void) { for(i=0; i<2; i++) {fflush(stdin); printf("\n\n\Entre com a turma do aluno: "); gets(vetor[i].turma); fflush(stdin); printf("\n\n\Entre com o nome do aluno: "); gets(vetor[i].nome); fflush(stdin); printf("\n\n\Entre com sexo do aluno:"); gets(vetor[i].sexo); fflush(stdin); printf("\n\n\Entre com o ano de nascimento do aluno:"); gets(vetor[i].data); fflush(stdin); } getche(); } void mostrar(void) { int i; for(i=0; i<2; i++) { printf("\n Turma do aluno: %s",vetor[i].turma); printf("\n Nome do aluno: %s",vetor[i].nome); printf("\n Sexo do aluno: %s",vetor[i].sexo); printf("\n Data: %s",vetor[i].data); } getche(); free(vetor[i].nome); free(vetor[i].turma); free(vetor[i].sexo); free(vetor[i].data); } Compartilhar este post Link para o post Compartilhar em outros sites
omar.pessoa 1 Denunciar post Postado Junho 23, 2009 Você está usando free(void *) para um array alocado estaticamente! Compartilhar este post Link para o post Compartilhar em outros sites