cwarez Postado Novembro 2, 2010 Denunciar Share Postado Novembro 2, 2010 (editado) pessoal, beleza?to precisando fazer uma funçao para alocar uma variavel ALUNO dinamicamente.fiz aqui e deu certove a logica ae se ta certo pessoal#include<stdlib.h> #include<stdio.h> struct alunos { char nome[81]; int matricula; char end[121]; char tel[21]; }; typedef struct alunos Aluno; //alocar variavel aluno Aluno* alocar_aluno() { Aluno *aluno; aluno = (Aluno*) malloc (sizeof(Aluno)); } int main() { Aluno *A; A = alocar_aluno(); system("PAUSE"); return 0; } Editado Novembro 2, 2010 por cwarez Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Novembro 2, 2010 Denunciar Share Postado Novembro 2, 2010 A única coisa que vejo que está faltando é você retornar o aluno na função alocar_aluno().return aluno; Também não se esqueça de liberar a memória alocada: system("PAUSE"); free(A); return 0;Abraços. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cwarez Postado Novembro 2, 2010 Autor Denunciar Share Postado Novembro 2, 2010 (editado) a éee, mas vo criar uma funcao dpss pra liberarvlwwwagora o problema ta na função preencherfloat preencher_aluno(Aluno* aluno) { printf("Aluno: "); scanf("%s", &(aluno->nome)); printf("\Matricula: "); scanf("%d", &(aluno->matricula)); printf("\Endereço: "); scanf("%s", &(aluno->end)); printf("\Telefone: "); scanf("%s", &(aluno->tel)); }e to chamando assim na principalpreencher_aluno(&A);qual o problema ae brother?to quebrando a cabeça aki e nadaas questoes do exercicio são essasa. Faça uma estrutura para representar os dados de um aluno.b. Faça uma função para alocar uma variável aluno.c. Faça uma função para preencher os dados de uma variável aluno, já aloca, via terminal.eu já fiz a A e a B, o codigo no inicio do postagora a C q ta tenso Editado Novembro 2, 2010 por cwarez Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Novembro 2, 2010 Denunciar Share Postado Novembro 2, 2010 Problema é que você deve chamar sem o &. Usando o &, você está enviando o endereço do ponteiro para a struct. Ou seja, um ponteiro para o ponteiro da struct aluno.Outra coisa é no scanf: quando é string, lembre-se que você não deve usar o &. (pelo mesmo motivo citado acima, geralmente a string já é um endereço)Ou seja, nos números e todos os outros (que você usa %d, %f etc.), mantenha o &. Ao ler uma string (%s), não use o &.Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cwarez Postado Novembro 2, 2010 Autor Denunciar Share Postado Novembro 2, 2010 entãofiz certofloat preencher_aluno(Aluno *aluno) { printf("Nome: "); scanf("%s", aluno->nome); printf("Matricula: "); scanf("%d", &(aluno->matricula)); printf("Endereco: "); scanf("%s", aluno->end); printf("Telefone: "); scanf("%s", aluno->tel); }dai eu chamo na principalpreencher_aluno(A);só que não da pra digitar o nome com espaço, por exemploMateus Camposda pra digitar só Mateusq isso man? =/ ta dificil Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Novembro 2, 2010 Denunciar Share Postado Novembro 2, 2010 scanf não lê com espaço. Veja a função gets e fgets.Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cwarez Postado Novembro 2, 2010 Autor Denunciar Share Postado Novembro 2, 2010 só que ainda fica dando erro, ali no endereçoele pula direto pro telefonefloat preencher_aluno(Aluno *aluno) { printf("Nome: "); gets(aluno->nome); printf("Matricula: "); scanf("%d", &(aluno->matricula)); printf("Endereco: "); gets(aluno->end); printf("Telefone: "); gets(aluno->tel); } e o printf também ta tenso void imprimir_aluno(Aluno a) { printf("\nNome: %s", a.nome); printf("\nMatricula: %d", a.matricula); printf("\nEndereco %s", a.end; printf("\nTel: %s\n", a.tel); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cwarez Postado Novembro 2, 2010 Autor Denunciar Share Postado Novembro 2, 2010 consegui resolver aqui coloquei emcima do endereço fflush (stdin);dai resolvi aqui Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 cwarez Postado Novembro 2, 2010 Autor Denunciar Share Postado Novembro 2, 2010 dai vem a Fe nem o enunciado da pra entenderf. Faça um programa que leia e liste os dados de uma quantidade indeterminada de alunos, sem alocar alunos desnecessariamente. Utilize um vetor de tamanho fixo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ursolouco Postado Novembro 2, 2010 Denunciar Share Postado Novembro 2, 2010 Salve, Ainda dá tempo ? Estou enferrujado, mas acho que nessa ainda posso ajudar.Segue código abaixo:/* BIBLIOTECAS */ #include <stdio.h> #include <stdlib.h> /* ESTRUTURAS E ASSINATURAS */ struct aluno { char nome[81]; int matricula; char end[121]; char tel[21]; }; struct aluno* novoAluno(); void debugAluno( struct aluno* ); /* IMPLEMENTAÇÕES */ struct aluno* novoAluno() { struct aluno* aluno; aluno = (struct aluno*) malloc( sizeof( struct aluno ) ); aluno->matricula = 0; aluno->nome[0] = ''; aluno->end[0] = ''; aluno->tel[0] = ''; return aluno; } void debugAluno( struct aluno* aluno ) { printf("\n----------------------------"); printf("\n aluno->matricula = %d", aluno->matricula); printf("\n aluno->nome = %s", aluno->nome); printf("\n aluno->end = %s", aluno->end); printf("\n aluno->tel = %s", aluno->tel); printf("\n----------------------------"); } /* APLICAÇÃO */ int main(int argc, char *argv[]) { struct aluno* ursao; ursao = novoAluno(); debugAluno( ursao ); system("PAUSE"); return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
cwarez
pessoal, beleza?
to precisando fazer uma funçao para alocar uma variavel ALUNO dinamicamente.
fiz aqui e deu certo
ve a logica ae se ta certo pessoal
Editado por cwarezLink para o comentário
Compartilhar em outros sites
9 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.