Ir ao conteúdo
  • Cadastre-se

Duvida em TAD e struct....


Tolrok

Posts recomendados

Bom, estou faznedo um programa para administrar meu cr....

Tenho um arquivo 'estruturas.cpp' com o seguinte codigo:


#include"estruturas.h"
struct materias
{
char nome[50];
char cod[7];
int periodo;
int oportunidade;
int passou;
int creditos;
float nota;
};

Outro aqruivo 'estruturas.h' com:


typedef struct materias Materias;

e finalmente um arquivo(incompleto) com a main tendo o seguinte codigo:


int main (void)
{
int n;
FILE *dados;
Materias **v, *aux;
dados=fopen("dados.txt","rt");
if(dados==NULL)
{
printf("Nao foi possivel abrir os dados.txt!\n");
exit(1);
}
aux=(Materias *)malloc(sizeof(Materias));
return 0;
}

meu problema é que não estou conseguindo alocar o aux, já tentei cria-lo sem usar o malloc. Alguma dica? Obrigado

Link para o comentário
Compartilhar em outros sites

Outro aqruivo 'estruturas.h' com:
Código:
[B]
typedef struct materias Materias; /* qual estrutura esta apontando ou contém?*/[/B]


int main (void)
{
int n;
FILE *dados;
Materias **v, *aux;
dados=fopen("dados.txt","rt");
if(dados==NULL)
{
printf("Nao foi possivel abrir os dados.txt!\n");
exit(1);
}
aux=(Materias *)malloc(sizeof(Materias));
[B] if (aux!)printf("\n erro de memoria");[/B]

// a memoria é alocada e o programa encerra?
printf("\n memoria alocada com sucesso");
[B]system("pause");[/B]
// system pause requer a biblioteca "stdlib.h"

return 0;
}

é amigo com o main incompleto, fica difícil adivinha o que você quer que o programa faça pelo que vi, se houver espaço para alocar, o programa encerra. lembrando que malloc retorna do tipo nulo, e você tem que pegar esse valor de retorno e fazer alguma coisa, como por exemplo inserir valores em sua estrutura .

faz o seguinte, faz as modificações dos locias e negrito.

Link para o comentário
Compartilhar em outros sites

Ueh, mas você alocou o aux... só que você não usou ele pra nada, como você sabe que você não alocou se assim que você chama o malloc() já acaba o programa?

bom, o visual studio estava dizendo que a sintaxe ta errada. Não consegui achar erro na sintaxe. Ele não ta identificando a definição da struct. Acho qeu assim ficou bem claro. Desculpa a desordem da duvida...

Outro aqruivo 'estruturas.h' com:
Código:
[B]
typedef struct materias Materias; /* qual estrutura esta apontando ou contém?*/[/B]


int main (void)
{
int n;
FILE *dados;
Materias **v, *aux;
dados=fopen("dados.txt","rt");
if(dados==NULL)
{
printf("Nao foi possivel abrir os dados.txt!\n");
exit(1);
}
aux=(Materias *)malloc(sizeof(Materias));
[B] if (aux!)printf("\n erro de memoria");[/B]

// a memoria é alocada e o programa encerra?
printf("\n memoria alocada com sucesso");
[B]system("pause");[/B]
// system pause requer a biblioteca "stdlib.h"

return 0;
}

é amigo com o main incompleto, fica difícil adivinha o que você quer que o programa faça pelo que vi, se houver espaço para alocar, o programa encerra. lembrando que malloc retorna do tipo nulo, e você tem que pegar esse valor de retorno e fazer alguma coisa, como por exemplo inserir valores em sua estrutura .

faz o seguinte, faz as modificações dos locias e negrito.

A minha duvida nem e´com o resto do programa em si, vou tentar deixar mais claro... Bom nessa parte do programa.

aux=(Materias *)malloc(sizeof(Materias));

O visual studio esta marcando Materias e dizendo que não fopi definido.

Ahhh você opontou meu erro naquele comentario. Eu não botei a struct no arquivo'.h', era isso. Bom obrigado!

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!