Ir para conteúdo
Fórum Script Brasil
  • 0

alocando struct aluno dinamicamente


cwarez

Pergunta

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

#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 por cwarez
Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

a éee,

mas vo criar uma funcao dpss pra liberar

vlwww

agora o problema ta na função preencher

float 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 principal

preencher_aluno(&A);

qual o problema ae brother?

to quebrando a cabeça aki e nada

as questoes do exercicio são essas

a. 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 post

agora a C q ta tenso

Editado por cwarez
Link para o comentário
Compartilhar em outros sites

  • 0

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!

Link para o comentário
Compartilhar em outros sites

  • 0

então

fiz certo

float 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 principal

preencher_aluno(A);

só que não da pra digitar o nome com espaço, por exemplo

Mateus Campos

da pra digitar só Mateus

q isso man? =/ ta dificil

Link para o comentário
Compartilhar em outros sites

  • 0

só que ainda fica dando erro, ali no endereço

ele pula direto pro telefone

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

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...